2013-05-30 65 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("");