2009-11-26 9 views
5

कैसे मैं केवल एक अंतरिक्ष प्रदर्शन के विचार लेने छोड़ने के अंदर रिक्त स्थान ट्रिम है में रिक्त स्थान ट्रिमिंग के सर्वश्रेष्ठ तरीका?एक स्ट्रिंग

Input: 
    AA  BB 
Output: 
AA BB 

Input: 
A  A 
Output: 
A A 

उत्तर

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

आउटपुट:

नोट: विपरीत अन्य समाधान यहाँ से कुछ, यह भी एक ही टैब एक भी अंतरिक्ष के साथ बदल देता है। आप किसी भी टैब आप उपयोग कर सकते हैं "{2,}" नहीं है, तो बजाय जो भी तेजी से हो जाएगा:

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

धन्यवाद एक गुच्छा .. :) –

7

एक भी अंतरिक्ष " " द्वारा दो या अधिक रिक्त स्थान "\\s{2,}" बदलें और एक trim() बाद में अग्रणी से छुटकारा और रिक्त स्थान अनुगामी के रूप में आप 1 उदाहरण में दिखाया पाने के लिए करते हैं।

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

वहाँ सही जवाब यहाँ हैं, जैसे:

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

लेकिन मुझे लगता है कि सही सवाल चुनना भी महत्वपूर्ण है। एक String ट्रिमिंग नियमित अभिव्यक्ति का उपयोग कर के बारे में पूछ के बजाय, क्यों न सिर्फ String ट्रिमिंग के बारे में पूछते हैं, और आप सबसे अच्छी रणनीति को दिखाने के लिए जवाब देने के लोगों की अनुमति देते हैं?

वहाँ अच्छी तरह से रिक्त स्थान को संक्षिप्त करने से रेगुलर एक्सप्रेशन का उपयोग करने के लिए बेहतर तरीके हो सकते हैं। निश्चित रूप से अन्य तरीके हैं।

+0

प्रश्न संपादित किया गया है। अब क्या आप मुझे एक बेहतर तरीका दिखा सकते हैं? धन्यवाद। –

+0

मेरा मतलब यह नहीं था कि एक निर्विवाद रूप से बेहतर तरीका था। अगर मैं एक जानता था तो मैं निश्चित रूप से आपको बताए बिना सवाल को पहले बताएगा। मैं बस यह इंगित करना चाहता था कि यह संभव था कि आप सही रणनीति की धारणा के आधार पर प्रतिक्रिया सीमित कर रहे हों। मैं कहूंगा कि जब तक आपके पास वैकल्पिक विकल्पों के साथ प्रयोग करने के लिए बहुत ही मजबूत प्रदर्शन कारण नहीं हैं, तो रेगेक्स मार्ग शायद मैं करता हूं। – roryparle