我希望用每行的一个空格@ end替换2个空格......
String msg = "ABCD 5320061 \n"+
"ABCD 5320061 \n";
System.out.println(msg.length());
String a1 = "[ \\s]{2}$";
String a2 = " ";
String x = msg.replaceAll(a1, a2);
System.out.println(x);
System.out.println(x.length());
但输出是:
34
ABCD 5320061
ABCD 5320061
33
只有最后一行结束空格被替换为空格
答案 0 :(得分:1)
我希望用每行
的空格替换2个空格
要匹配行的结尾,您需要使用Pattern.MULTILINE
modifier或其嵌入式(内嵌)版本(?m)
。
另外,要仅匹配水平空格,您可以使用[^\S\r\n]
或[\p{Zs}\t]
。
所以,我会选择
String x = msg.replaceAll("(?m)[\\p{Zs}\t]{2}$", a2);
或
String x = msg.replaceAll("(?m)[^\\S\r\n]{2}$", a2);