从另一个String中删除一组非连续字符(作为String)?

时间:2018-05-09 15:02:04

标签: java arrays string

我需要通过从s1中删除s2中出现的所有字符来生成s3字符串。

例如:

String s1 = "Computer"; 
String s2 = "mur";

结果必须是:"Copte"

我试图这样做:s3 = s1.replace(s2, "");但它不起作用。我得到同一个词:computer

2 个答案:

答案 0 :(得分:7)

你可以使用replaceAll女巫接受正则表达式:

String result = s1.replaceAll(String.format("[%s]", s2), "");// Output Copte

如果你的字符串包含一些特殊字符,例如} { ) ( . -这个字符可以是正则表达式语法的一部分,在这种情况下你必须转义它们,你可以像这样使用Pattern.quote(s2):< / p>

String result = s1.replaceAll(String.format("[%s]", Pattern.quote(s2)), "");

答案 1 :(得分:1)

s1.replace(s2, "")s2的子字符串时,

s1有效。但是,mur不是Computer的子字符串。由于m u rComputer的子字符串,因此您可以单独删除它们。

String s1="Computer", s2="mur";
for (char c : s2.toCharArray()) {  // create a char array [m, u, r]
    s1 = s1.replace(String.valueOf(c), "");  // remove them separatly
}
System.out.print(s1);