Java 字符串';s全部替换就是不替换
我有以下代码:Java 字符串';s全部替换就是不替换,java,string,replaceall,Java,String,Replaceall,我有以下代码: System.out.println("Trace: #" +"2"); System.out.println(rv); rv.replaceAll("$t",sTAB); System.out.println("Trace: #" +"3"); System.out.println(rv); rv和sTAB为字符串类型。sTAB的值为制表符。结果如下: Trace: #2 is$thi$t Trace: #3 is$thi$t 但我希望: Trace:
System.out.println("Trace: #" +"2");
System.out.println(rv);
rv.replaceAll("$t",sTAB);
System.out.println("Trace: #" +"3");
System.out.println(rv);
rv和sTAB为字符串类型。sTAB的值为制表符。结果如下:
Trace: #2
is$thi$t
Trace: #3
is$thi$t
但我希望:
Trace: #2
is$thi$t
Trace: #3
is{tab}hi{tab}
当然,{tab}是实际的制表符。你能解释一下我的代码有什么问题吗?接受一个正则表达式,返回被替换的字符串
$
是与行尾匹配的正则表达式
尝试使用:
rv = rv.replaceAll("\\$t", sTAB);
没有
您需要重新分配字符串rv=rv.replaceAll($t),sTAB)代码>JavaString
s是不可变的。一旦你有了一个字符串
,它就不会改变replaceAll
实际上返回一个包含替换项的新字符串
你应该这样做
rv = rv.replaceAll("$t",sTAB);
还要注意,replaceAll
采用正则表达式。您可能应该转义$
rv = rv.replaceAll("\\$t", sTAB);
rv.replaceAll(\$t),sTAB);编译时出现“非法转义字符”错误。rv.replaceAll(“\\$t”,sTAB);编译,但给出与以前相同的结果。@Kevin是否已将replaceAll()
的返回值重新分配给rv
?我刚刚测试了这个,它工作正常。我不敢相信我忘记了rv=rv.rep。。。但这也不起作用,但加上两条斜线就起作用了。谢谢
rv = rv.replaceAll("\\$t", sTAB);