C#中的字符串字符差异
String character difference in C#
我们有两个字符串,string first="abcdeabcde"
和 string second="cdefgcdefg"
。
什么是 fastest/most 打字高效的方法来提出第三个字符串,该字符串仅包含第一个字符串中可能的字符,例如string third="cdecde"
?
更正式的例子:
- 第一个字符串包含集合
F={a,b,c,d,e}
中的字符
- 第二个字符串包含字符
S={c,d,e,f,g}
我想知道如何快速导出包含集合 S\(S\F)= S intersection F
中的字符的第三个字符串。
即字符串 second
包含字符串交集中的字符。
第二个例子:
- 字符串 w="aaabbbccc"
- 字符串 z="bbbcccddd"
- 预期结果:字符串 y="bbbccc" 即第二个字符串,但只有第一个字符串中的字符 b、c
第三个例子:
- string a="ABCDABCDBABDBC" - 来自 aplhabet {A,B,C,D}
的随机内容
- string b="CDEDECEDCDE" - 来自字母表 {C,D,E}
的随机内容
- 最终字符串 f="CDDCDCD" - 删除了所有出现的 {E}
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());
我们有两个字符串,string first="abcdeabcde"
和 string second="cdefgcdefg"
。
什么是 fastest/most 打字高效的方法来提出第三个字符串,该字符串仅包含第一个字符串中可能的字符,例如string third="cdecde"
?
更正式的例子:
- 第一个字符串包含集合
F={a,b,c,d,e}
中的字符
- 第二个字符串包含字符
S={c,d,e,f,g}
我想知道如何快速导出包含集合 S\(S\F)= S intersection F
中的字符的第三个字符串。
即字符串 second
包含字符串交集中的字符。
第二个例子:
- 字符串 w="aaabbbccc"
- 字符串 z="bbbcccddd"
- 预期结果:字符串 y="bbbccc" 即第二个字符串,但只有第一个字符串中的字符 b、c
第三个例子:
- string a="ABCDABCDBABDBC" - 来自 aplhabet {A,B,C,D} 的随机内容
- string b="CDEDECEDCDE" - 来自字母表 {C,D,E} 的随机内容
- 最终字符串 f="CDDCDCD" - 删除了所有出现的 {E}
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());