我正在尝试将StringBuilder中的所有NewLines全部替换为空,并且我认为这会起作用...但事实并非如此。

Pattern replace = Pattern.compile("\\n");
Matcher matcher2 = replace.matcher(sb);
matcher2.replaceAll("");


我想念什么?
谢谢

最佳答案

Matcher.replaceAll("blah")返回String,因此与在StringBuilder上执行操作无关。但是,除了StringBuilder之外,您没有使用toString()的任何方法。 StringBuilder是可变的,但是在您的情况下,您正在使用Matcher类替换字符串。

答案是捕获变量中的替换字符串。

String str= matcher2.replaceAll("");


Matcher.replaceAll()@Java API

您可以通过下面的简单示例了解这一点。

    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尚未更改。

09-30 16:53