C#中的字符串字符差异

String character difference in C#

我们有两个字符串,string first="abcdeabcde"string second="cdefgcdefg"

什么是 fastest/most 打字高效的方法来提出第三个字符串,该字符串仅包含第一个字符串中可能的字符,例如string third="cdecde"?

更正式的例子:

我想知道如何快速导出包含集合 S\(S\F)= S intersection F 中的字符的第三个字符串。

即字符串 second 包含字符串交集中的字符。

第二个例子:

第三个例子:

string first = "abcdeabcde";
string second = "cdefgcdefg";

string intersection = String.Concat(first.Intersect(second));

string result = String.Concat(first.Where(c => intersection.Contains(c)));
Console.WriteLine(result); //output "cdecde"

解释:

Intersect 扩展方法 returns 一个 IEnumerable<char> 仅包含两个字符串中都存在的字符,为了将其转换为字符串, Concat方法连接所有成员和 returns 结果字符串。

编辑

现在只有存在于交集中的字符应该保留在字符串中 first

String.Intersect() 方法应该完全符合您的要求。查看更多信息 here

示例:

var string1 = "abcdefg";
var string2 = "cdekdjdfj";

var intersect = string1.Intersect(string2);

如果您正在寻找一个简短的解决方案并且性能不是问题,您可能想试试这个:

var intersect = first.Intersect(second).ToList();
var result = new String(second.Where(c => intersect.Contains(c)).ToArray());