Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串';s全部替换就是不替换_Java_String_Replaceall - Fatal编程技术网

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)

Java
String
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);