如何替换字符串中的最后一个单词

时间:2011-08-22 10:44:07

标签: java string

有谁知道如何替换字符串中的最后一个单词。

目前我在做:

someStr = someStr.replace(someStr.substring(someStr.lastIndexOf(" ") + 1), "New Word");

上面的代码替换了字符串中单词的每一次出现。

感谢。

6 个答案:

答案 0 :(得分:8)

您可以“从头开始”创建一个新字符串,如下所示:

someStr = someStr.substring(0, someStr.lastIndexOf(" ")) + " New Word";


另一种选择(如果你真的想使用“替换”:)就是

someStr = someStr.replaceAll(" \\S*$", " New Word");

replaceAll使用正则表达式,\S*$表示空格,后跟一些非空格字符,后跟字符串结尾。 (也就是说,替换最后一个空格后的字符。)

答案 1 :(得分:2)

你离解决方案不远了。只需将原始字符串保留到" "的最后一个索引,然后将新单词追加到此子字符串。这里不需要replace

答案 2 :(得分:0)

您的代码正在做的是用“New word”替换子字符串。

相反,您需要先键入子串,然后对该字符串执行替换。

以下是我将如何做到这一点

someStr = someStr.substring(0, someStr.lastIndexOf(" ") + 1) + "New word"

答案 3 :(得分:0)

尝试:

someStr = someStr.substring( someStr.lastIndexOf(" ") ) + " " + new_word;

答案 4 :(得分:0)

使用此:someStr。substring(0, someStr.lastIndexOf(" ")) + "New Word"

你也可以使用正则表达式,例如someStr.repalaceFirst(“\ s + \ S + $”,“”+“新词”)

答案 5 :(得分:0)

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

示例(替换最后的 b 字符)

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