替换字符串的最后一部分

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换字符串的最后一部分相关的知识,希望对你有一定的参考价值。

我想用,替换最后一个)的String

假设字符串是:

插入双(姓名,日期,

转换为:

插入双(姓名,日期)

答案

以下代码应该用','替换')'的最后一次出现。

StringBuilder b = new StringBuilder(yourString);
b.replace(yourString.lastIndexOf(","), yourString.lastIndexOf(",") + 1, ")" );
yourString = b.toString();

注意如果String不包含',',则会抛出异常。

另一答案

如果你能做到这一点,那就麻烦了

word = (String) word.subSequence(0, word.length() -1);

这将返回没有String的最后部分的新String。

另一答案

您可以使用正则表达式:

String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");

replaceAll(...)将匹配字符串字符串与给定的正则表达式(参数1)(在这种情况下,如果它是逗号,我们匹配最后一个字符)。用替换(参数2)替换它(在这种情况下是')')。

加!如果您想确保拖尾空格和标签得到处理,您可以将正则表达式更改为',[ ]*$'。注意'['和']'没有反斜杠(我不知道如何正确地逃避它)。

希望这可以帮助。

另一答案

这是一种自定义方法,仅替换给定字符串的最后一个子字符串。它对你有用:

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(",")) + ")";
另一答案

更易读的方式......您可以使用它来了解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);
另一答案

检查字符串的长度,检查最后一个字符(如果你的长度很容易)并在必要时更换它。这个解决方案不是lang。具体。只是用一个常识

另一答案

试试这个正则表达式(^.+)b(.+$)

示例(替换最后一个b字符)

System.out.println("1abchhhabcjjjabc".replaceFirst("(^.+)b(.+$)", "$1$2"));
另一答案

要用)替换字符串的最后一个字符

str = str.substring(0, str.length()-1)+")";

确保您的字符串不为空或为空。

另一答案

在类似的搜索中我找到了这个答案:

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();
}

以上是关于替换字符串的最后一部分的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Cmake字符串正则表达式替换从路径url的多个实例中获取路径url的最后一部分并用它替换整个路径

Shell外壳的简易模拟

如何从(和替换)TabLayout 和 ViewPager 移动到新片段?

从列更新和替换字符串的开始部分

根据字符串名称而不是列表视图项位置替换片段并启动活动

为啥此代码片段返回意外结果?