繁体   English   中英

如何在字符串的多个部分具有相同字符的情况下替换它们的多个部分?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM