C# 如何比较两个字符串数组并将匹配值存储在另一个字符串数组中?
我想比较这两个数组,删除所有数字(2,3,4,6)值,并将匹配字符串值存储在另一个数组中 我想要这样的结果:C# 如何比较两个字符串数组并将匹配值存储在另一个字符串数组中?,c#,arrays,.net,string,linq,C#,Arrays,.net,String,Linq,我想比较这两个数组,删除所有数字(2,3,4,6)值,并将匹配字符串值存储在另一个数组中 我想要这样的结果: string[] a = { 2; a; 3; b; 4; c} string[] b = { 2; a; 6; c} 我尝试过这个,但它增加了所有的值 string[] c = {a; c;} 你需要的不是联合 string[] result = a.Union(b).ToArray(); 最简单的解决方案是使用Linq来完成这项工作 string[] result = a.I
string[] a = { 2; a; 3; b; 4; c}
string[] b = { 2; a; 6; c}
我尝试过这个,但它增加了所有的值
string[] c = {a; c;}
你需要的不是联合
string[] result = a.Union(b).ToArray();
最简单的解决方案是使用
Linq
来完成这项工作
string[] result = a.Intersect(b).ToArray();
使用和其中
:
int tmp;
var c = a.Where(x => b.Contains(x) && !int.TryParse(x, out tmp)).ToArray();
根据您的注释删除或替换冒号(;):
Union
不是这样工作的。使用Intersect
No。它无法修复它,因为它有一个代码>位于数字的末尾。所以!int.TryParse(2;,out tmp)
将计算为false,并将其作为结果返回。此列表的符号是无效的C结构。应该有,
代替所以我认为这是打字错误。不管你想得到什么,“123”是一个数字,“123;”是一个字符串。如何从字符串数组中删除或替换冒号(;)。
string[] result = a.Intersect(b).Where(c => !char.IsDigit(c[0])).ToArray();
string[] result = a.Intersect(b).Where(c => !char.IsDigit(c[0]))
.Select(c => c.Replace(';',' ')).ToArray();