我試圖用StringBuilder替換所有NewLines中的任何內容,並且我認爲這會起作用......但它不會。試圖在StringBuilder中替換換行符
Pattern replace = Pattern.compile("\\n");
Matcher matcher2 = replace.matcher(sb);
matcher2.replaceAll("");
我錯過了什麼? 感謝
我試圖用StringBuilder替換所有NewLines中的任何內容,並且我認爲這會起作用......但它不會。試圖在StringBuilder中替換換行符
Pattern replace = Pattern.compile("\\n");
Matcher matcher2 = replace.matcher(sb);
matcher2.replaceAll("");
我錯過了什麼? 感謝
Matcher.replaceAll("blah")
回報String
所以沒有什麼關於StringBuilder的執行操作。但是,除toString()
之外,您沒有使用StringBuilder
的任何方法。 StringBuilder
是可變的,但在你的情況下,你正在使用Matcher
類替換字符串。
答案只是捕獲替換字符串在一個變量。
String str= matcher2.replaceAll("");
您可以通過簡單的例子,下面明白這一點。
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
尚未改變。
因爲['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()'。 –
String message = matcher2.replaceAll("");
Strings
是不可變的如此
matcher2.replaceAll("");
將返回一個新String
沒有改變StringBuilder
。只需使用結果
String result = matcher2.replaceAll("");
將'matcher2.replaceAll(「」);'賦值給某個'String'。 – NINCOMPOOP
你也有太多'\\'你逃避反斜槓,但是然後有一個n被尋找。所以你可能想考慮可能使用'\ n \ r'或者只是''n' –