猿问

当部分具有共同字符时如何替换字符串的多个部分?

我需要更改单个字符串的几个部分,其中指定的部分有一些共同的字符;例如:

工人 => 工作

工作 => 工作

注意 :: " => "表示"更改为"

使用如下代码会产生大量错误:

String txt = "work like a real worker";
String txt2 = txt.replace("worker", "working").replace("work", "worked");

当我测试上面的代码时,它们输出“像真正的工作一样工作”,但是我需要“像真正的工作一样工作”。


莫回无
浏览 118回答 3
3回答

慕尼黑5688855

如果使用replaceAll而不是replace,则可以使用正则表达式。正则表达式将允许您使用\b来表示单词边界。这样做,您只会替换整个单词,而不是像您现在所做的那样替换单词的一部分。String txt2 = txt.replaceAll("\\bworker\\b", "working").replaceAll("\\bwork\\b", "worked");

Helenr

如果您想替换整个单词,请查看迈克尔的回答。如果你想替换一些可能包含在其他词中的词而不是再次替换你之前替换的目标词,你可以尝试添加这样的中间步骤:String txt = "work like a real worker in the workplace";String txt2 = txt.replace("worker", "{$1}").replace("work", "{$2}");String result = txt2.replace("{$1}", "working").replace("{$2}", "worked");印刷在工作场所像真正的工作一样工作

BIG阳

问题是,它首先将“worker”替换为“working”,这是正确的,但之后将“working”中的“work”替换为“worked”,结果是“workeding”。如您所见,“作品”-replacer 也替换了第二个作品,这是不应该的,因为它不是独立的。为避免这种情况,只需在作品后面留一个空格即可。有了空格,它只会替换一个独立的作品,后面没有任何东西(因为有一个空格将它与下一个单词分开)。它还将替换空间,因此请确保在工作后也放置一个空间。它应该是这样的:String txt = "work like a real worker";String txt2 = txt.replace("worker", "working").replace("work ", "worked ");
随时随地看视频慕课网APP

相关分类

Java
我要回答