假设我有:
String s = "1479K";
String t = "459LP";
我想回去
String commonChars = "49";
两个字符串之间的共同字符。
显然可以使用如下标准循环:
String commonChars = "";
for (i = 0; i < s.length; i++)
{
char ch = s.charAt(i);
if (t.indexOf(ch) != -1)
{
commonChars = commonChars + ch;
}
}
但是我希望能够使用 replaceAll
在一行中完成此操作。这可以按如下方式完成:
String commonChars = s.replaceAll("["+s.replaceAll("["+t+"]","")+"]","");
我的问题是:是否可以使用一次 replaceAll
调用来做到这一点?什么是正则表达式?我想我必须使用某种前瞻性,但当我想到它时,我的大脑就变成了糊状。
最佳答案
String commonChars = s.replaceAll("[^"+t+"]","");
请注意,您可能需要转义 t
中的特殊字符,例如使用 Pattern.quote(t)
而不是上面的 t
。
关于java - 如何使用单个 replaceAll 查找 Java 中两个字符串的公共(public)字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4203911/