我有一个这样的字符串:
BEGIN\n\n\n\nTHIS IS A STRING\n\nEND
我想删除所有新行字符并将结果显示为:
BEGIN THIS IS A STRING END
我如何做到这一点?由于我的经验中的转义顺序,标准API函数将无法工作。
答案 0 :(得分:2)
尝试str.replaceAll("\\\\n", "");
- 这称为双重转义:)
答案 1 :(得分:1)
简单的replace('\n', ' ')
会导致字符串变为:
BEGIN THIS IS A STRING END
**** **
其中*
是空格。如果您想要单个空格,请尝试replaceAll("[\r\n]{2,}", " ")
如果它们没有换行符,但文字"\n"
会枯萎,请尝试:
replace("\\n", " ")
或:
replaceAll("(\\\\n){2,}", " ")
答案 2 :(得分:1)
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(" ", " ");
}
答案 3 :(得分:1)
这对我有用:
String s = "BEGIN\n\n\n\nTHIS IS A STRING\n\nEND";
String t = s.replaceAll("[\n]+", " ");
System.out.println(t);
关键是注册表。
答案 4 :(得分:0)
当然,标准API可行,但您可能需要双重转义(“\\ n”)。
答案 5 :(得分:0)
我通常不用Java编写代码,但快速搜索让我相信String.trim应该适合你。它表示它会删除前导和尾随空格以及\ n \ t等...
答案 6 :(得分:0)
希望这段代码能够提供帮助,
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);