我想用,
)
的字符串
假设字符串是:
插入双重(姓名,日期,
转换为:
插入双重(姓名,日期)
答案 0 :(得分:70)
以下代码应将','
的最后一次出现替换为')'
。
StringBuilder b = new StringBuilder(yourString);
b.replace(yourString.lastIndexOf(","), yourString.lastIndexOf(",") + 1, ")" );
yourString = b.toString();
注意如果String
不包含','
,则会抛出异常。
答案 1 :(得分:36)
您可以使用正则表达式:
String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");
replaceAll(...)
将字符串字符串与给定的正则表达式(参数1)匹配(在这种情况下,如果它是逗号,则匹配最后一个字符)。将其替换为替换(参数2)(在本例中为“)
”)。
加号!如果您想确保拖尾空格和标签得到处理,您只需将正则表达式更改为“,\[ \t\]*$
”即可。注意'\[
'和'\]
'没有反斜杠(我不知道如何正确地逃避它)。
希望这有帮助。
答案 2 :(得分:17)
这是一种自定义方法,只替换给定字符串的最后一个子字符串。这对你有用:
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;
}
答案 3 :(得分:8)
str = str.substring(0, str.lastIndexOf(",")) + ")";
答案 4 :(得分:2)
更易读的方式......您可以使用它来了解String及其“函数”
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);
答案 5 :(得分:1)
检查字符串的长度,检查最后一个字符(如果你的长度很容易) 并在必要时更换它。 这个解决方案不是lang。具体。只是使用常识。
答案 6 :(得分:0)
试试这个正则表达式(^.+)b(.+$)
示例(替换最后的 b 字符)
System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));
答案 7 :(得分:0)
用)
str = str.substring(0, str.length()-1)+")";
确保您的字符串不为空或为空。
答案 8 :(得分:0)
在类似的搜索中,我找到了这个答案:
https://stackoverflow.com/a/37066403/875282
我认为这是最好的,因为它按预期使用了Java方法,而不是尝试重新发明轮子。 它本质上是向后读取字符串,并使用String对象的replaceFirst方法,这正是我想要的。
这是关于replaceFirst String方法和StringBuffer的反向函数的文档: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replaceFirst-java.lang.String-java.lang.String-
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html#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();
}
答案 9 :(得分:0)
使用Apache的StringUtils函数removeEnd():
StringUtils.removeEnd("www.domain.com", ".com") = "www.domain"
答案 10 :(得分:-2)
word = (String) word.subSequence(0, word.length() -1);
这将返回没有String的最后一部分的新String。