我想用一个空格替换所有空白字符,同时保留所有新行和回车字符

时间:2015-10-28 18:27:06

标签: java regex

所以我一直试用并错误一段时间无济于事。我在这里看了其他的答案,但唯一的展示如何摆脱所有多余的,但没有提到如何保存。以下是我的最后一次尝试:

records.replaceAll("\\s[^\\r^\\n]+", " ")

希望你们中的一个可以提供帮助。

2 个答案:

答案 0 :(得分:4)

您可能正在寻找

records = records.replaceAll("[\\s&&[^\r\n]]+"," ")

感谢intersection operator &&我们正在创建一个字符类,它与任何空格字符\s相交,字符不是\r\n

演示:

System.out.println("----BEFORE:");
String records = "foo    bar   baz\rABC\nDEF\t\tGHI";
System.out.println(records);
records = records.replaceAll("[\\s&&[^\r\n]]+", " ");
System.out.println("----AFTER:");
System.out.println(records);

输出:

----BEFORE:
foo    bar   baz
ABC
DEF     GHI
----AFTER:
foo bar baz
ABC
DEF GHI

答案 1 :(得分:2)

你可以简单地做

records.replaceAll(" +", " ")

records.replaceAll("(?:(?!\\r|\\n)\\s)+", " ")