我想把最后一个字符串
假设字符串是:
,
替换为)
。假设字符串是:
它需要转换为:Insert into dual (name,date,
Insert into dual (name,date)
,
替换为)
。它需要转换为:Insert into dual (name,date,
Insert into dual (name,date)
StringBuilder b = new StringBuilder(yourString);
b.replace(yourString.lastIndexOf(","), yourString.lastIndexOf(",") + 1, ")" );
yourString = b.toString();
注意 如果String
中不包含','
,则会抛出异常。
您可以使用正则表达式:
String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");
replaceAll(...)
函数会使用给定的正则表达式(参数1)匹配字符串(在本例中,如果最后一个字符是逗号,则匹配它)。然后用替换文本(参数2)替换它(在本例中是')
')。
另外!如果你想确保处理尾随空格和制表符,只需将正则表达式更改为',\[ \t\]*$
'。注意:'\[
'和'\]
'没有反斜杠(我不知道如何正确转义它)。
这是一个自定义方法,用于替换给定字符串中仅最后一个子字符串。这对您很有用:
private String replaceLast(String string, String from, String to) {
int lastIndex = string.lastIndexOf(from);
if (lastIndex < 0)
return string;
String tail = string.substring(lastIndex).replaceFirst(from, to);
return string.substring(0, lastIndex) + tail;
}
str = str.substring(0, str.lastIndexOf(",")) + ")";
lastIndexOf
返回-1
,substring
将抛出一个异常。 - ADTC使用 Apache Commons 的 StringUtils 函数 removeEnd():
StringUtils.removeEnd("www.domain.com", ".com") = "www.domain"
String myString = "Insert into dual (name,date,";
String newString = "";
int length = myString.length();
String lastChar = myString.substring(length-1);
if (lastChar.contains(",")) {
newString = myString.substring(0,length-1) + ")";
}
System.out.println(newString);
在类似的搜索中,我找到了这个答案:
我认为这是最好的选择,因为它使用Java方法来实现,而不是试图重新发明轮子。
它基本上是从后往前读取字符串,并使用String对象的replaceFirst方法,这正是我所需要的。
这里是replaceFirst String方法和StringBuffer的reverse函数的文档:
这是我如何将其实现为简单删除我想要解释的代码片段中的一些HTML“pre”标记。请记住,也要反转搜索字符串,然后将所有内容恢复正常。
private String stripHtmlPreTagsFromCodeSnippet(String snippet) {
String halfCleanSnippet = snippet.replaceFirst("<pre>", "");
String reverseSnippet = new StringBuffer(halfCleanSnippet).reverse().toString();
String reverseSearch = new StringBuffer("</pre>").reverse().toString();
String reverseCleanSnippet = reverseSnippet.replaceFirst(reverseSearch, "");
return new StringBuffer(reverseCleanSnippet).reverse().toString();
}
检查字符串的长度,检查最后一个字符(如果您知道长度,这很容易),并在必要时进行替换。
这个解决方案不是特定于某种编程语言的 - 只需运用常识即可。
将您的字符串的最后一个字符替换为)
:
str = str.substring(0, str.length()-1)+")";
确保您的字符串不为空或null。
尝试使用这个正则表达式 (^.+)b(.+$)
示例(替换最后一个b字符)
System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));