[英]How to replace multiple parts of a String while the parts have characters in common?
我需要更改单个字符串的多个部分,其中指定部分具有一些共同的字符; 例如:
工人=>工作
工作=>工作
注意 :: “ => ” 表示 “ 更改为 ”
使用如下代码可以消除大量错误:
String txt = "work like a real worker";
String txt2 = txt.replace("worker", "working").replace("work", "worked");
当我测试上面的代码时,它们输出“像真实作品一样工作”,但是我需要“像真实作品一样工作”。
如果使用replaceAll
而不是replace
,则可以使用正则表达式。 正则表达式将允许您使用\\b
表示单词边界 。 这样,您将只替换整个单词,而不是像现在一样替换单词的各个部分。
String txt2 = txt.replaceAll("\\bworker\\b", "working").replaceAll("\\bwork\\b", "worked");
如果要替换整个单词,请查看迈克尔的答案 。 如果要替换可能包含在其他单词中的某些单词,而又不想替换之前替换的目标单词,则可以尝试添加一个中间步骤,如下所示:
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");
版画
在工作场所像真正的工作一样工作
问题是,它首先用“工作”替换了“工人”,这是正确的,但是之后,它用“工作”替换了“工作”中的“工作”,从而导致了“工作”。
如您所见,“工作”替换器也替换了第二个工作,它不应该替换,因为它并不独立。
为避免这种情况,只需在作品后面留一个空间。 有了空格,它只会代替一个单独站立的作品,而背后没有任何东西(因为有一个空格将其与下一个单词分隔开)。
它还会替换空间,因此请确保在工件后面也留一个空间。
它看起来应该像这样:
String txt = "work like a real worker";
String txt2 = txt.replace("worker", "working").replace("work ", "worked ");
使用正则表达式
String txt = "work like a real worker";
String txt2 = txt.replaceAll("\\worker\\b", "working").replaceAll("\\work\\b", "worked");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.