0

我正在尝试用任何内容替换 StringBuilder 中的所有 NewLines,我认为这会起作用……但事实并非如此。

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

我错过了什么?谢谢

4

3 回答 3

1

Matcher.replaceAll("blah")返回String,因此没有任何关于对 StringBuilder 执行操作的内容。但是,您没有使用任何方法StringBuilderexcept 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尚未更改。

于 2013-05-30T12:39:13.173 回答
0
String message = matcher2.replaceAll("");
于 2013-05-30T12:38:30.450 回答
0

Strings是不可变的,所以

matcher2.replaceAll("");

将返回一个新的String而不改变StringBuilder. 只需使用结果

String result = matcher2.replaceAll("");
于 2013-05-30T12:38:32.010 回答