因此,假设我有:

String s = "1479K";
String t = "459LP";

我想回来
String commonChars = "49";

两个字符串之间的公共(public)字符。

显然,可以使用以下标准循环:
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

09-06 03:36