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

3

有人知道如何替换字符串中的最后一个单词吗?

我目前的做法是:

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

上述代码会替换字符串中每个单词的所有出现。谢谢。
6个回答

10
您可以像这样从头创建一个新字符串:“string myString = "Hello World";
someStr = someStr.substring(0, someStr.lastIndexOf(" ")) + " New Word";

另一个选项(如果你真的想使用"replace" :))是进行以下操作:
someStr = someStr.replaceAll(" \\S*$", " New Word");

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


@aioobe 我有一个字符串,类似于 "19-05-2011 00:00 - 一些文本",你知道如何将日期值替换为空字符串吗? - Bitmap
1
yourString.substring(16)?:-) - aioobe
@aioobe 抱歉再次打扰您 - 但是您知道如何获取日期部分吗? - Bitmap
2
@Bitmap,API文档是你的好朋友!你可以使用yourString.substring(0,16)来完成它。 - aioobe

2

您离解决方案不远了。只需保留原始字符串直到最后一个" "的索引,并将新单词附加到此子字符串即可。这里不需要使用replace


@JB Nizet 您的意思是要删除 someStr= 的赋值吗? - Bitmap
1
不,我的意思是aioobe的解决方案...和Waldo。 - JB Nizet

0
你的代码目前是将子字符串替换为“New word”。
然而,这样会有问题。你需要先获取子字符串,在那个字符串上进行替换。
下面是我会怎么写代码:
someStr = someStr.substring(0, someStr.lastIndexOf(" ") + 1) + "New word"

0

尝试:

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

0

使用以下代码:someStr.substring(0, someStr.lastIndexOf(" ")) + "New Word"

您也可以使用正则表达式,例如:someStr.repalaceFirst("\s+\S+$", " " + "New Word")


0

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接