所以假设我有:
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.