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 は String 型です。また、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:41.060 に答える
0

いいえ?

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