繁体   English   中英

字符串的全部替换不替换

[英]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}是实际的制表符。 您能解释一下我的代码有什么问题吗?

replaceAll()采用正则表达式返回替换后的String

$是与行尾匹配的正则表达式元字符

尝试使用:

rv = rv.replaceAll("\\$t", sTAB);

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM