Заменить последнее появление символа в строке
У меня есть строка, подобная этой
"Position, fix, dial"
Я хочу заменить последнюю двойную кавычку ( ") на двойную кавычку escape (\" )
Результат строки должен быть
"Position, fix, dial\"
Как я могу это сделать. Мне известно о замене первого вхождения строки. но не знаю, как заменить последнее вхождение строки
Ответы
Ответ 1
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();
Ответ 2
Это должно работать:
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\"
Тест.
Ответ 3
Если вы хотите удалить только символ las (в случае его наличия), это метод с одной строкой. Я использую это для каталогов.
localDir = (dir.endsWith("/")) ? dir.substring(0,dir.lastIndexOf("/")) : dir;
Ответ 4
String docId = "918e07,454f_id,did";
StringBuffer buffer = new StringBuffer(docId);
docId = buffer.reverse().toString().replaceFirst(",",";");
docId = new StringBuffer(docId).reverse().toString();