我有一个这样的字符串:
BEGIN\n\n\n\nTHIS IS A STRING\n\nEND
我想删除所有换行符,结果如下:
BEGIN THIS IS A STRING END
我如何做到这一点?根据我的经验,由于转义序列,标准 API 函数将不起作用。
尝试str.replaceAll("\\\\n", "");
-这称为双重转义:)
一个简单replace('\n', ' ')
的将导致字符串变为:
BEGIN THIS IS A STRING END
**** **
其中*
's 是空格。如果您想要单个空格,请尝试replaceAll("[\r\n]{2,}", " ")
如果它们不是换行符而是文字"\n"
的枯萎尝试:
replace("\\n", " ")
或者:
replaceAll("(\\\\n){2,}", " ")
String str = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND;";
str = str.replaceAll("\\\n", " ");
// Remove extra white spaces
while (str.indexOf(" ") > 0) {
str = str.replaceAll(" ", " ");
}
这对我有用:
String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND";
String t = s.replaceAll("[\n]+", " ");
System.out.println(t);
关键是正则表达式。
当然,标准 API 可以工作,但您可能需要双重转义 ("\\n")。
我通常不使用 Java 编写代码,但快速搜索让我相信 String.trim 应该适合您。它说它删除了前导和尾随空格以及 \n \t 等......
希望这个片段会有所帮助,
Scanner sc = new Scanner(new StringReader("BEGIN\n\n\n\nTHIS IS A STRING\n\nEND "));
String out = "";
while (sc.hasNext()) {
out += sc.next() + " ";
}
System.out.println(out);