我有这样的替换字符的最后一次出现的字符串
"Position, fix, dial"
我想替换最后一个双引号(“)与逃生双引号(\”)的字符串
的字符串的结果是
"Position, fix, dial\"
我该怎么做。我知道替换字符串的第一次出现。但不知道如何替换字符串中最后一次出现
我有这样的替换字符的最后一次出现的字符串
"Position, fix, dial"
我想替换最后一个双引号(“)与逃生双引号(\”)的字符串
的字符串的结果是
"Position, fix, dial\"
我该怎么做。我知道替换字符串的第一次出现。但不知道如何替换字符串中最后一次出现
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\"
Test。
这比接受的答案要好,因为它是通用的。 – demongolem
如果您只想删除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();
这只适用于单个字符的东西。 –
只是问。为什么不喜欢这个? 'String str =“\”位置,修复,拨号\“”; str.replaceAll(“[\”] \\ Z“,”\“”); System.out.println(str);' – Dudeist
是的,你可以使用** str = str.replaceAll(“[\”] \\ Z“,”\\\\\“”)**。但它会替换输入末尾的最后一个“。它不适用于<**“位置,修复,再次拨号**”。 – yavuzkavus
@Dudeist,因为它的可读性差得多。 – Patrick