25

私はこのような文字列を持っています

"Position, fix, dial"

最後の二重引用符 (") をエスケープ二重引用符 (\") に置き換えたい

文字列の結果は

"Position, fix, dial\"

これどうやってするの。最初に見つかった文字列を置き換えることを認識しています。しかし、文字列の最後の出現を置き換える方法がわかりません

4

4 に答える 4

61

これはうまくいくはずです:

String replaceLast(String string, String substring, String replacement)
{
  int index = string.lastIndexOf(substring);
  if (index == -1)
    return string;
  return string.substring(0, index) + replacement
          + string.substring(index+substring.length());
}

これ:

System.out.println(replaceLast("\"Position, fix, dial\"", "\"", "\\\""));

版画:

"Position, fix, dial\"

テスト

于 2013-05-21T08:37:41.077 に答える
44
String str = "\"Position, fix, dial\"";
int ind = str.lastIndexOf("\"");
if( ind>=0 )
    str = new StringBuilder(str).replace(ind, ind+1,"\\\"").toString();
System.out.println(str);

アップデート

 if( ind>=0 )
    str = new StringBuilder(str.length()+1)
                .append(str, 0, ind)
                .append('\\')
                .append(str, ind, str.length())
                .toString();
于 2013-05-21T08:36:21.750 に答える