我试图用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' –