问题描述
我需要删除使用 .trim()
完成的标题和尾随空格,我还需要将所有换行符替换为使用 .replaceAll("\\R+"," ")
完成的单个空格,但在此之前我需要删除所有空格(换行前后除外)。
String toReplace = "\t\t random \t\n\r\t text \t\t";
String result = toReplace.replaceAll(Some magic,"")
.replaceAll("\\R+"," ")
.trim();
Assert.assertEquals("random text",result);
谢谢。
解决方法
您可以匹配换行符周围的空格并将它们与换行符替换为空格一起删除:
String result = toReplace.replaceAll("\\h*\\R+\\h*"," ").trim();
正则表达式是 \h*\R+\h*
,而 .replaceAll("\\h*\\R+\\h*"," ")
用单个正则空格替换了以下模式序列:
-
\h*
- 零个或多个水平空白 -
\R+
- 一个或多个换行序列 -
\h*
- 零个或多个水平空白