我想用
,
替换最后一个字符串 )
。
假设字符串是:
插入对偶(姓名,日期,
将其转换为:
插入对偶(姓名,日期)
以下代码应将最后一次出现的
','
替换为 ')'
。
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)(在本例中为“)
”)。
Plus! 如果您想确保处理尾随空格和制表符,只需将正则表达式更改为“
,\[ \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(",")) + ")";
使用 Apache Commons' StringUtils 函数 removeEnd():
StringUtils.removeEnd("www.domain.com", ".com") = "www.domain"
更易读的方式...您可以使用它来了解 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);
检查字符串的长度,检查最后一个字符(如果有长度就很容易),并在必要时替换它。
此解决方案不特定于语言 - 只需使用常识即可。
在类似的搜索中我找到了这个答案:
我认为它是最好的,因为它按预期使用 Java 方法,而不是试图重新发明轮子。
它本质上是向后读取字符串并使用String对象的replaceFirst方法,这正是我正在寻找的。
这里是有关replaceFirst String方法和StringBuffer的反向函数的文档:
以下是我如何实现它,以简单地从我想要解释的代码片段中删除一些 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();
}
尝试这个正则表达式
(^.+)b(.+$)
示例(替换最后一个b字符)
System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));
用
)
替换字符串的最后一个字符:
str = str.substring(0, str.length()-1)+")";
确保您的字符串不为空或为空。
以下是如何替换另一个字符串中最后一次出现的字符串:
String yourString = "foo, foo, foo, bar!";
yourString = yourString.replaceAll("foo, (?!foo, )", "bar!, ");
(?!foo, )
确保之后不会出现 foo,
。
只要做到以下几点,还有什么麻烦呢?
word = (String) word.subSequence(0, word.length() -1);
这将返回一个新的字符串,没有字符串的最后一部分。