有谁知道如何替换字符串中的最后一个单词。
目前我在做:
someStr = someStr.replace(someStr.substring(someStr.lastIndexOf(" ") + 1), "New Word");
上面的代码替换了字符串中单词的每一次出现。
感谢。
答案 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"));