java - जावा का उपयोग कर स्ट्रिंग में डुप्लिकेट सफेद रिक्त स्थान को कैसे हटाएं?



string whitespace (6)

आप किसी भी स्थान, टैब, न्यूलाइन और सभी के लिए स्ट्रिंग टोकनिसर का उपयोग करने का भी प्रयास कर सकते हैं। एक आसान तरीका है,

String s = "Your Text Here";        
StringTokenizer st = new StringTokenizer( s, " " );
while(st.hasMoreTokens())
{
    System.out.print(st.nextToken());
}

https://code.i-harness.com

जावा का उपयोग कर स्ट्रिंग में डुप्लिकेट सफेद रिक्त स्थान (टैब, न्यूलाइन, रिक्त स्थान इत्यादि सहित) को कैसे हटाएं?


आप रेगेक्स का उपयोग कर सकते हैं

(\s)\1

तथा

इसे $1 साथ बदलें।

जावा कोड:

str = str.replaceAll("(\\s)\\1","$1");

यदि इनपुट "foo\t\tbar " तो आपको आउटपुट के रूप में "foo\tbar " मिल जाएगा
लेकिन अगर इनपुट "foo\t bar" यह अपरिवर्तित रहेगा क्योंकि इसमें लगातार व्हाइटस्पेस वर्ण नहीं हैं।

यदि आप अंतरिक्ष के रूप में सभी व्हाइटस्पेस वर्णों (अंतरिक्ष, लंबवत टैब, क्षैतिज टैब, कैरिज रिटर्न, फॉर्म फ़ीड, नई लाइन) का इलाज करते हैं तो आप एक ही स्थान के साथ लगातार सफेद स्थान की किसी भी संख्या को प्रतिस्थापित करने के लिए निम्न रेगेक्स का उपयोग कर सकते हैं:

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

लेकिन यदि आप लगातार दो सफेद जगह को एक ही स्थान से बदलना चाहते हैं तो आपको यह करना चाहिए:

str = str.replaceAll("\\s{2}"," ");

इसे आज़माएं - आपको import java.util.regex.*;

    Pattern pattern = Pattern.compile("\\s+");
    Matcher matcher = pattern.matcher(string);
    boolean check = matcher.find();
    String str = matcher.replaceAll(" ");

जहां string आपकी स्ट्रिंग है जिस पर आपको डुप्लिकेट सफेद रिक्त स्थान को हटाने की आवश्यकता है


नमस्ते सबसे तेज़ (लेकिन सबसे सुंदर तरीका नहीं) मुझे मिला है

while (cleantext.indexOf("  ") != -1)
  cleantext = StringUtils.replace(cleantext, "  ", " ");

यह रेगेक्स के विपरीत एंड्रॉइड पर बहुत तेजी से चल रहा है


यह तीन चरणों में संभव हो सकता है:

  1. स्ट्रिंग को वर्ण सरणी में कनवर्ट करें (ToCharArray)
  2. Charater सरणी पर पाश के लिए आवेदन करें
  3. फिर स्ट्रिंग प्रतिस्थापन फ़ंक्शन लागू करें (बदलें ("स्टिंग जिसे आप प्रतिस्थापित करना चाहते हैं", "मूल स्ट्रिंग"));

हालांकि यह बहुत देर हो चुकी है, मुझे एक बेहतर समाधान मिला है (जो मेरे लिए काम करता है) जो लगातार उसी प्रकार के सफेद रिक्त स्थान को अपने प्रकार के एक सफेद स्थान से बदल देगा। अर्थात्:

   Hello!\n\n\nMy    World  

होगा

 Hello!\nMy World 

ध्यान दें कि अभी भी सफेद रिक्त स्थान की ओर अग्रसर और पीछे हैं। तो मेरा पूरा समाधान है:

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

यहां, trim() सभी प्रमुख और पिछली सफेद स्पेस स्ट्रिंग को "" के साथ बदल देता है। (\\s) समूह # 1 में \\s को कैप्चर करने के लिए है (यह सफेद रिक्त स्थान जैसे '', '\ n', '\ t') है। + चिह्न 1 या उससे अधिक पूर्व टोकन से मेल खाने के लिए है। तो (\\s)+ किसी भी एकल सफेद स्पेस वर्ण ('', '\ n' या '\ t') के बीच लगातार वर्ण (1 या अधिक) हो सकता है। $1 मिलान करने वाले तारों को समूह # 1 स्ट्रिंग (जिसमें केवल 1 श्वेत स्पेस कैरेक्टर होता है) मिलान करने वाले स्ट्रिंग को प्रतिस्थापित करने के लिए है (जो एकल सफेद स्पेस कैरेक्टर है जो मेल खाता है)। उपरोक्त समाधान इस तरह बदल जाएगा:

   Hello!\n\n\nMy    World  

होगा

Hello!\nMy World

मुझे अपना उपरोक्त समाधान यहां नहीं मिला है इसलिए मैंने इसे पोस्ट किया है।





whitespace