替换字符串的最后一部分

ztyzrc3y  于 2021-07-05  发布在  Java
关注(0)|答案(11)|浏览(350)

我想替换最后一个字符串,它是 ,) 假设字符串为:
插入双(姓名,日期,
转换为:
插入(姓名、日期)

ymzxtsji

ymzxtsji1#

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

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;
}
4dc9hkyq

4dc9hkyq2#

更具可读性的方式。。。您可以使用它来了解字符串及其函数

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);
h43kikqp

h43kikqp3#

检查字符串的长度,检查最后一个字符(如果你有长度很容易),并在必要时替换它。此解决方案不是特定于语言的。就凭常识吧。

bt1cpqcv

bt1cpqcv4#

在一次类似的搜索中,我找到了这个答案:
https://stackoverflow.com/a/37066403/875282
我认为它是最好的,因为它按照预期使用java方法,而不是试图重新发明轮子。它实际上是向后读取字符串并使用string对象的replacefirst方法,这正是我要找的。
以下是有关replacefirst string方法和stringbuffer的reverse函数的文档: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();
}
pgpifvop

pgpifvop5#

以下代码应替换 ',' 用一个 ')' .

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

注意如果 String 不包含 ',' .

7vhp5slm

7vhp5slm6#

如果你能这么做,有什么麻烦吗

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

这将返回不带字符串最后一部分的新字符串。

km0tfn4u

km0tfn4u7#

使用apaches stringutils函数removeend():

StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
iovurdzv

iovurdzv8#

可以使用正则表达式:

String aResult = "Insert into dual (name,date,".replaceAll(",$", ")");
``` `replaceAll(...)` 将字符串与给定的正则表达式(参数1)匹配(在本例中,如果最后一个字符是逗号,则匹配它)。替换为替换(参数2)(在本例中为' `)` ').

**加上!**如果您想确保尾随空格和制表符得到处理,您可以将regex改为' `,\[ \t\]*$` '. '注解' `\[` '和' `\]` '没有反斜杠(我不知道如何正确地避开它)。

希望这有帮助。
sr4lhrrt

sr4lhrrt9#

str = str.substring(0, str.lastIndexOf(",")) + ")";
kkbh8khc

kkbh8khc10#

将字符串的最后一个字符替换为
) str = str.substring(0, str.length()-1)+")"; 确保您的字符串不是空的或空的。

ztigrdn8

ztigrdn811#

试试这个正则表达式 (^.+)b(.+$) 示例(替换最后一个b字符)

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

相关问题