我正在尝试用任何内容替换 StringBuilder 中的所有 NewLines,我认为这会起作用……但事实并非如此。
Pattern replace = Pattern.compile("\\n");
Matcher matcher2 = replace.matcher(sb);
matcher2.replaceAll("");
我错过了什么?谢谢
我正在尝试用任何内容替换 StringBuilder 中的所有 NewLines,我认为这会起作用……但事实并非如此。
Pattern replace = Pattern.compile("\\n");
Matcher matcher2 = replace.matcher(sb);
matcher2.replaceAll("");
我错过了什么?谢谢
Matcher.replaceAll("blah")
返回String
,因此没有任何关于对 StringBuilder 执行操作的内容。但是,您没有使用任何方法StringBuilder
except toString()
。StringBuilder
是可变的,但在您的情况下,您正在使用Matcher
类替换字符串。
答案只是在变量中捕获替换的字符串。
String str= matcher2.replaceAll("");
您可以通过下面的简单示例来理解这一点。
StringBuffer sb=new StringBuffer("I love JAVA");
Pattern replace = Pattern.compile("love");
Matcher matcher2 = replace.matcher(sb.toString());
String s=matcher2.replaceAll("hate");
System.out.println(sb.toString());
System.out.println(s);
打印:
I love JAVA
I hate JAVA
Sb
尚未更改。
String message = matcher2.replaceAll("");
Strings
是不可变的,所以
matcher2.replaceAll("");
将返回一个新的String
而不改变StringBuilder
. 只需使用结果
String result = matcher2.replaceAll("");