替换字符串中字符的最后一次出现

2022-09-01 17:52:56

我有一个这样的字符串

"Position, fix, dial"

我想用转义双引号(\“)替换最后一个双引号(”)

字符串的结果为

"Position, fix, dial\"

我该怎么做。我知道替换字符串的第一次出现。但不知道如何替换字符串的最后一次出现


答案 1

这应该有效:

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\"

测试


答案 2
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();