Заменить последнее вхождение символа в строку

У меня такая строка

"Position, fix, dial"

Я хочу заменить последнюю двойную кавычку (") на двойную кавычку (\")

Результат строки должен быть

"Position, fix, dial\"

Как я могу это сделать. Я знаю о замене первого вхождения строки. но не знаю, как заменить последнее вхождение строки

4 ответа

Решение
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);

Это должно работать:

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

Тест

Если вы хотите удалить только символ las (если он есть), это метод из одной строки. Я использую это для каталогов.

localDir = (dir.endsWith("/")) ? dir.substring(0,dir.lastIndexOf("/")) : dir;
String docId = "918e07,454f_id,did";
StringBuffer buffer = new StringBuffer(docId);
docId = buffer.reverse().toString().replaceFirst(",",";");
docId = new StringBuffer(docId).reverse().toString();
Другие вопросы по тегам