[英]String's replace all is replacing none
我有以下代码:
System.out.println("Trace: #" +"2");
System.out.println(rv);
rv.replaceAll("$t",sTAB);
System.out.println("Trace: #" +"3");
System.out.println(rv);
rv和sTAB的类型为String。 sTAB的值是制表符。 输出如下:
Trace: #2
is$thi$t
Trace: #3
is$thi$t
但我期望:
Trace: #2
is$thi$t
Trace: #3
is{tab}hi{tab}
当然,{tab}是实际的制表符。 您能解释一下我的代码有什么问题吗?
Java String
是不可变的。 一旦有了String
它就不会改变。 replaceAll
实际上返回一个包含替换的新字符串。
你应该做
rv = rv.replaceAll("$t",sTAB);
另请注意, replaceAll
采用正则表达式。 您可能应该逃脱$
。
rv = rv.replaceAll("\\$t", sTAB);
没有?
rv = rv.replaceAll("$t",sTAB);
您需要重新分配字符串rv = rv.replaceAll("$t",sTAB);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.