【发布时间】:2011-09-08 17:52:05
【问题描述】:
我有一个这样的字符串:
BEGIN\n\n\n\nTHIS IS A STRING\n\nEND
我想删除所有换行符,结果为:
BEGIN THIS IS A STRING END
我如何做到这一点?根据我的经验,由于转义序列,标准 API 函数将无法工作。
【问题讨论】:
-
所以你有文字
\n?没有实际的换行符?
我有一个这样的字符串:
BEGIN\n\n\n\nTHIS IS A STRING\n\nEND
我想删除所有换行符,结果为:
BEGIN THIS IS A STRING END
我如何做到这一点?根据我的经验,由于转义序列,标准 API 函数将无法工作。
【问题讨论】:
\n?没有实际的换行符?
试试str.replaceAll("\\\\n", ""); - 这叫做双重转义:)
【讨论】:
一个简单的replace('\n', ' ') 会导致字符串变成:
BEGIN THIS IS A STRING END
**** **
* 是空格。如果您想要单个空格,请尝试replaceAll("[\r\n]{2,}", " ")
如果它们不是换行符而是文字 "\n" 的枯萎尝试:
replace("\\n", " ")
或:
replaceAll("(\\\\n){2,}", " ")
【讨论】:
这对我有用:
String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND";
String t = s.replaceAll("[\n]+", " ");
System.out.println(t);
关键是正则表达式。
【讨论】:
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(" ", " ");
}
【讨论】:
当然,标准 API 可以工作,但您可能需要双重转义 ("\\n")。
【讨论】:
我通常不使用 Java 编写代码,但快速搜索让我相信 String.trim 应该适合您。它说它会删除前导和尾随空格以及 \n \t 等...
【讨论】:
希望这个 sn-p 会有所帮助,
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);
【讨论】: