यदि स्ट्रिंग निम्न में से किसी भी प्रारूप में है तो मैं एक स्ट्रिंग में व्हाइटस्पेस डालना चाहता हूं:

(A)   => (A)
(A)B  => (A) B
A(B)  => A (B)
A(B)C => A (B) C
AB(C) => AB (C)

पहले ही, आपका बहुत धन्यवाद।

संपादित करें: प्रतिस्थापन केवल तभी किया जाना चाहिए जब मेल खाने वाले कोष्ठक हों।

AB(C => AB(C should remain as is.
0
newbie 23 जून 2011, 11:23
इसे प्राप्त करने के अनंत तरीके हैं। क्या आप कृपया हमें बता सकते हैं कि आप क्या पसंद करेंगे?
 – 
Ajinkya
23 जून 2011, 11:24

2 जवाब

सबसे बढ़िया उत्तर

यह ठीक वैसा नहीं है जैसा आप करते हैं, लेकिन लगभग। यह कोष्ठकों से घिरी हर चीज के पहले और बाद में रिक्त स्थान जोड़ देगा। किसी भी मौजूदा स्थान को एक स्थान से बदल दिया जाएगा। इसके अलावा अंत में अनुगामी रिक्त स्थान हटा दिए जाते हैं।

टिप्पणी: मैंने केवल पैटर्न की जांच की है (रास्ते में ग्रहण में), कुछ मामूली वाक्यविन्यास त्रुटियां हो सकती हैं।

String addParentheses(String text) {       
        Pattern ps = Pattern.compile("(\\s)*(\\([^\\)]*\\))(\\s)*"); //Find everything surrounded by (), 'eating' the spaces before and after as well.
        Matcher m=ps.matcher(text);
        StringBuffer output = new StringBuffer();
        while (m.find()) {
            m.appendReplacement(output, " $1 ");  //Surround with spaces, replacing any existing one 
        }

        m.appendTail(output);
        return output.toString().trim(); //Remove trailing spaces
}
1
Gerbrand 23 जून 2011, 12:02
String s = "AB(C)"; // This is your input
s.replaceAll("(", " (");
s.replaceAll(")", ") ");
s = s.trim();
-2
gc20 23 जून 2011, 11:28
नहीं, वह रनटाइम अपवाद फेंक देगा। अगर यह काम करता है, तो यह (A) के आसपास रिक्त स्थान भी जोड़ देगा, जो कि ओपी नहीं चाहता है।
 – 
Bart Kiers
23 जून 2011, 11:46
यह रनटाइम अपवाद क्यों फेंक देगा? और क्या ट्रिम() मामले को रिक्त स्थान (ए) के साथ संभाल नहीं पाएगा? ध्यान दें कि यह ओपी संपादन के बावजूद है।
 – 
gc20
1 जुलाई 2011, 07:48
हां, trim() इसे संभाल लेंगे। अपवाद के बारे में: इसे संकलित करने का प्रयास करें और आप देखेंगे।
 – 
Bart Kiers
1 जुलाई 2011, 09:11