जवाबों:
String.trim()
स्ट्रिंग की शुरुआत और अंत से व्हाट्सएप (रिक्त स्थान, नई लाइनें आदि) से छुटकारा पाने के लिए विधि का उपयोग करें ।
String trimmedString = myString.trim();
String cleanString = dirtyString.strip() ; // Call new `String::string` method.
String::strip…
पुरानी String::trim
विधि में व्हॉट्सएप की एक अजीब परिभाषा है ।
जैसा कि यहां चर्चा की गई है , जावा 11 कक्षा में नए strip…
तरीके जोड़ता है String
। ये व्हॉट्सएप की एक अधिक यूनिकोड-प्रेमी परिभाषा का उपयोग करते हैं। के लिए JavaDoc में इस परिभाषा के नियम देखें Character::isWhitespace
।
उदाहरण कोड।
String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");
या आप सिर्फ अग्रणी या सिर्फ अनुगामी व्हाट्सएप पट्टी कर सकते हैं ।
आपने ठीक-ठीक उल्लेख नहीं किया है कि कौन-सी कोड बिंदु आपके नए अंक बनाती है। मुझे लगता है कि आपके द्वारा लक्षित लक्ष्य बिंदुओं की सूची में आपकी नई पंक्ति शामिल होने की संभावना है strip
:
यह जावा कोड वही करता है जो प्रश्न के शीर्षक में पूछा जाता है, जो "एक स्ट्रिंग-जावा की शुरुआत और अंत से नई सूची हटाता है":
String.replaceAll("^[\n\r]", "").replaceAll("[\n\r]$", "")
केवल पंक्ति के अंत से नई सूची निकालें:
String.replaceAll("[\n\r]$", "")
लाइन की शुरुआत से ही नई सूची निकालें:
String.replaceAll("^[\n\r]", "")
यदि आपकी स्ट्रिंग संभावित है null
, तो उपयोग करने पर विचार करें StringUtils.trim()
- का शून्य-सुरक्षित संस्करण String.trim()
।
String trimStartEnd = "\n TestString1 linebreak1\nlinebreak2\nlinebreak3\n TestString2 \n";
System.out.println("Original String : [" + trimStartEnd + "]");
System.out.println("-----------------------------");
System.out.println("Result String : [" + trimStartEnd.replaceAll("^(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])|(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])$", "") + "]");
मैं इसके साथ ही एक उत्तर भी जोड़ने जा रहा हूं, क्योंकि मेरे पास एक ही प्रश्न था, बशर्ते उत्तर पर्याप्त नहीं था। कुछ विचार को देखते हुए, मैंने महसूस किया कि यह नियमित अभिव्यक्ति के साथ बहुत आसानी से किया जा सकता है।
शुरुआत से नई कड़ियाँ निकालने के लिए :
// Trim left
String[] a = "\n\nfrom the beginning\n\n".split("^\\n+", 2);
System.out.println("-" + (a.length > 1 ? a[1] : a[0]) + "-");
और एक स्ट्रिंग का अंत:
// Trim right
String z = "\n\nfrom the end\n\n";
System.out.println("-" + z.split("\\n+$", 2)[0] + "-");
मुझे यकीन है कि यह किसी स्ट्रिंग को ट्रिम करने का सबसे अधिक कुशल तरीका नहीं है। लेकिन यह इस तरह के एक ऑपरेशन को इनलाइन करने के लिए सबसे साफ और सरल तरीका प्रतीत होता है।
ध्यान दें कि किसी भी भिन्नता और वर्णों के संयोजन को ट्रिम करने के लिए एक ही विधि की जा सकती है, क्योंकि यह एक साधारण रेगेक्स है।
split()
सिर्फ सीमा है। यदि आप असीमित बार मिलान करना चाहते हैं तो इसे छोड़ दें।
यदि आप केवल एक स्ट्रिंग (inbetween नहीं) की शुरुआत और अंत में लाइन ब्रेक (रिक्त स्थान, टैब नहीं) निकालना चाहते हैं , तो आप इस दृष्टिकोण का उपयोग कर सकते हैं:
एक स्ट्रिंग के प्रारंभ ( ) और समाप्ति ( ) से कैरिज रिटर्न ( \\r
) और लाइन फीड ( \\n
) को हटाने के लिए एक नियमित अभिव्यक्ति का उपयोग करें :^
$
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "")
पूरा उदाहरण:
public class RemoveLineBreaks {
public static void main(String[] args) {
var s = "\nHello\nWorld\n";
System.out.println("before: >"+s+"<");
s = s.replaceAll("(^[\\r\\n]+|[\\r\\n]+$)", "");
System.out.println("after: >"+s+"<");
}
}
यह आउटपुट:
before: >
Hello
World
<
after: >Hello
World<
String text = readFileAsString("textfile.txt");
text = text.replace("\n", "").replace("\r", "");