سؤال

وكيف يمكنني تقليم المساحات داخل ولم يتبق سوى مسافة واحدة مع الأخذ النظر في الأداء؟

<اقتباس فقرة>
Input:
     AA     BB
Output:
AA BB

Input:
A      A
Output:
A A
هل كانت مفيدة؟

المحلول

System.out.println("     AA     BB".replaceAll("\\s+", " ").trim());

وإخراج:

AA BB

ملحوظة: وخلافا لبعض الحلول الأخرى هنا، وهذا يحل محل أيضا علامة تبويب واحدة مع مسافة واحدة. إذا لم يكن لديك أي علامات التبويب يمكنك استخدام "{2،}" بدلا من ذلك الذي سيكون أسرع:

System.out.println("     AA     BB".replaceAll(" {2,}", " ").trim());

نصائح أخرى

واستبدال اثنين أو أكثر من المساحات "\\s{2,}" من قبل " " مسافة واحدة والقيام trim() بعد ذلك للتخلص من أبرز ومسافات زائدة كما كنت أظهر في المثال 1ST.

output = input.replaceAll("\\s{2,}", " ").trim();
s = s.replaceAll("\\s+", " " ).trim();

و

"Hello a a g g a   gag gs    gs@".replaceAll( "[ ]+{2}", " ") ).trim();

وهناك الإجابات الصحيحة هنا، منها مثلا:

s = s.replaceAll("\\s+", " " ).trim();

ولكن أعتقد أنه من المهم أيضا اختيار السؤال الصحيح. بدلا من يسأل عن تقليم String باستخدام التعابير العادية، لماذا لا تسأل فقط عن تقليم String، وتسمح للناس الإجابة لتظهر لك أفضل استراتيجية؟

قد يكون هناك أيضا طرق أفضل للانهيار المساحات من استخدام تعبير عادي. هناك بالتأكيد <م> البعض طرق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top