0

我有以下代码:

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

4

4 回答 4

6

replaceAll()接受一个正则表达式返回被替换的String.

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

尝试使用:

rv = rv.replaceAll("\\$t", sTAB);
于 2012-02-09T19:20:26.133 回答
2

JavaString是不可变的。一旦你有了String它就不会改变。 replaceAll实际上返回一个带有替换的新字符串。

你应该做

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

另请注意,它replaceAll需要一个正则表达式。您可能应该逃避$.

rv = rv.replaceAll("\\$t", sTAB);
于 2012-02-09T19:21:46.557 回答
0

不?

rv = rv.replaceAll("$t",sTAB);
于 2012-02-09T19:21:10.197 回答
0

您需要重新分配字符串rv = rv.replaceAll("$t",sTAB);

于 2012-02-09T19:21:41.060 回答