2013-05-30 68 views
0

我试图用StringBuilder替换所有NewLines中的任何内容,并且我认为这会起作用......但它不会。试图在StringBuilder中替换换行符

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

我错过了什么? 感谢

+2

将'matcher2.replaceAll(“”);'赋值给某个'String'。 – NINCOMPOOP

+0

你也有太多'\\'你逃避反斜杠,但是然后有一个n被寻找。所以你可能想考虑可能使用'\ n \ r'或者只是''n' –

回答

0

Matcher.replaceAll("blah")回报String所以没有什么关于StringBuilder的执行操作。但是,除toString()之外,您没有使用StringBuilder的任何方法。 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尚未改变。

+0

因为['Pattern#matcher'](http://docs.oracle.com/javase/7/docs/api/java /util/regex/Pattern.html#matcher(java.lang.CharSequence))采用任何['CharSequence'](http://docs.oracle.com/javase/7/docs/api/java/lang/CharSequence。 html)作为参数,你不需要在'replace.matcher(sb)'中调用'sb.toString()'。 –

0
String message = matcher2.replaceAll(""); 
0

Strings是不可变的如此

matcher2.replaceAll(""); 

将返回一个新String没有改变StringBuilder。只需使用结果

String result = matcher2.replaceAll("");