试图在StringBuilder中替换换行符

时间:2013-05-30 12:27:15

标签: java stringbuilder

我试图在没有任何内容的情况下替换StringBuilder中的所有NewLines,我认为这样可行......但事实并非如此。

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

我错过了什么? 感谢

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

String message = matcher2.replaceAll("");

答案 2 :(得分:0)

Strings是不可变的,所以

matcher2.replaceAll("");

将返回新的String,而不会更改StringBuilder。只需使用结果

String result = matcher2.replaceAll("");