我希望更改字符串的几个部分,其中指定部分具有相似的字符;例如:
工作者->工作
工作->工作
使用下面的代码会抛出很多错误:
String txt = "work like a real worker";
String txt2 = txt.replace("worker", "working").replace("work", "worked");
上面的代码输出“工作得像真正的工作”,而我需要“工作得像真正的工作”。
答案 0 :(得分:2)
如果使用replaceAll
而不是replace
,则可以使用正则表达式。正则表达式将允许您使用\b
来表示word boundaries。这样,您将只替换整个单词,而不是像现在一样替换单词的一部分。
String txt2 = txt.replaceAll("\\bworker\\b", "working").replaceAll("\\bwork\\b", "worked");
答案 1 :(得分:1)
如果要替换整个单词,请查看Michael's answer。如果您想替换掉一些可能包含在其他单词中的单词,而不用再次替换之前替换的目标单词,则可以尝试添加一个中间步骤,如下所示:
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");
打印
像在工作场所中的真实工作一样工作
答案 2 :(得分:0)
问题是,它首先用“正在工作”代替“工人”,这是正确的, 但之后,它将“工作”中的“工作”替换为“已工作”,从而导致“工作”。
如您所见,“工作”替换器也替换了第二个工作,它不应该替换,因为它并不独立。
为避免这种情况,只需在作品后面留一个空格。有了这个空间,它只会代替一个单独站立的作品,而背后没有任何东西(因为有一个空格将它与下一个单词分隔开)。
它还将替换空间,因此请确保在工件后面也留一个空间。
它应该像这样:
String txt = "work like a real worker";
String txt2 = txt.replace("worker", "working").replace("work ", "worked ");
答案 3 :(得分:-1)
使用正则表达式
String txt = "work like a real worker";
String txt2 = txt.replaceAll("\\worker\\b", "working").replaceAll("\\work\\b", "worked");