我试图在没有任何内容的情况下替换StringBuilder中的所有NewLines,我认为这样可行......但事实并非如此。
Pattern replace = Pattern.compile("\\n");
Matcher matcher2 = replace.matcher(sb);
matcher2.replaceAll("");
我错过了什么? 感谢
答案 0 :(得分:1)
Matcher.replaceAll("blah")
返回String
,因此没有任何关于在StringBuilder上执行操作的信息。但是,除了StringBuilder
之外,您没有使用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
尚未更改。
答案 1 :(得分:0)
String message = matcher2.replaceAll("");
答案 2 :(得分:0)
Strings
是不可变的,所以
matcher2.replaceAll("");
将返回新的String
,而不会更改StringBuilder
。只需使用结果
String result = matcher2.replaceAll("");