जवाबों:
ऐशे ही:
yourString = yourString.replaceAll("\\s+", " ");
उदाहरण के लिए
System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " "));
आउटपुट
lorem ipsum dolor sit.
इसका क्या \s+
मतलब है?
\s+
एक नियमित अभिव्यक्ति है। \s
एक स्थान, टैब, नई लाइन, कैरिज रिटर्न, फॉर्म फीड या वर्टिकल टैब से मेल खाता है, और +
कहता है "एक या एक से अधिक"। इस प्रकार उपरोक्त कोड सभी "व्हाट्सएप सब्सट्रिंग्स" को एक ही वर्ण के साथ एक वर्ण से अधिक समय तक ध्वस्त कर देगा।
स्रोत: जावा: स्ट्रिंग्स में डुप्लिकेट सफेद रिक्त स्थान को हटा रहा है
\s+
लेकिन 2 बैकस्लैश \\ का क्या मतलब है?
"\\"
एक एकल बैकस्लैश से युक्त स्ट्रिंग का प्रतिनिधित्व करता है। तो \s+
आपको लिखने का प्रतिनिधित्व करने के लिए "\\s+"
।
आप रेगेक्स का उपयोग कर सकते हैं
(\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, " ", " ");
यह एक रेगेक्स के विपरीत एंड्रॉइड पर बहुत तेज चल रहा है
String str = " Text with multiple spaces ";
str = org.apache.commons.lang3.StringUtils.normalizeSpace(str);
// str = "Text with multiple spaces"
हालांकि यह बहुत देर हो चुकी है, मैंने एक बेहतर समाधान (जो मेरे लिए काम करता है) पाया है जो अपने प्रकार के एक सफेद स्थान के साथ लगातार सभी एक ही प्रकार के सफेद रिक्त स्थान को बदल देगा। अर्थात्:
Hello!\n\n\nMy World
होगा
Hello!\nMy World
नोटिस अभी भी सफेद रिक्त स्थान के लिए अग्रणी और पीछे हैं। तो मेरा पूरा समाधान है:
str = str.trim().replaceAll("(\\s)+", "$1"));
यहाँ, trim()
"" के साथ सभी प्रमुख और अनुगामी श्वेत अंतरिक्ष तारों को प्रतिस्थापित करता है। समूह # 1 में (\\s)
कैप्चरिंग के लिए है \\s
(जो कि सफेद रिक्त स्थान है जैसे '', '\ n', '\ t') । साइन 1 या अधिक पूर्ववर्ती टोकन के मिलान के लिए है। तो किसी भी सफेद अंतरिक्ष वर्ण ('', '\ n' या '\ t') के बीच लगातार वर्ण (1 या अधिक) हो सकते हैं। मिलान प्रकार के समूह # 1 स्ट्रिंग (जिसमें केवल 1 श्वेत स्थान वर्ण होता है) के साथ स्ट्रिंग को बदलने के लिए है (जो कि मिलान किए गए एकल सफेद स्थान वर्ण है)। उपरोक्त समाधान इस तरह से बदल जाएगा:+
(\\s)+
$1
Hello!\n\n\nMy World
होगा
Hello!\nMy World
मुझे अपना उपरोक्त समाधान यहां नहीं मिला है इसलिए मैंने इसे पोस्ट किया है।
यदि आप सभी प्रमुख और अनुगामी व्हाट्सएप से छुटकारा पाना चाहते हैं तो आप कुछ इस तरह करना चाहते हैं:
// \\A = Start of input boundary
// \\z = End of input boundary
string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1");
फिर आप यहां सूचीबद्ध अन्य रणनीतियों का उपयोग करके डुप्लिकेट को हटा सकते हैं:
string = string.replaceAll("\\s+"," ");
यह तीन चरणों में संभव हो सकता है: