【问题标题】:How to compare two string arrays and store the matching values in another string array?如何比较两个字符串数组并将匹配的值存储在另一个字符串数组中?
【发布时间】:2017-05-25 06:47:25
【问题描述】:
string[] a = { 2; a; 3; b; 4; c}
string[] b = { 2; a; 6; c}

我想比较这两个数组并删除所有数字(2,3,4,6)值并将匹配字符串值存储在另一个数组中。

我想要这样的结果:

string[] c = {a; c;}

我试过这个,但它正在添加所有值。

string[] result = a.Union(b).ToArray();

【问题讨论】:

  • Union 不能那样工作。使用Intersect

标签: c# arrays .net string linq


【解决方案1】:

使用IntersectWhere

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();

【讨论】:

  • 如何删除或替换冒号 (;) 形式的字符串数组。
【解决方案2】:

你需要相交而不是联合

string[] result  = a.Intersect(b).ToArray();

【讨论】:

    【解决方案3】:

    最简单的解决方案是使用Linq 来完成这项工作

    int tmp;
    var c = a.Where(x => b.Contains(x) && !int.TryParse(x, out tmp)).ToArray();
    

    【讨论】:

    • 没有。它无法修复它,因为它在数字末尾有一个;。所以!int.TryParse(2;, out tmp) 将评估为 false 并将其作为结果返回。
    • 此列表的符号是无效的 C# 结构。应该有, 代替; 所以我认为这是拼写错误。不管你想达到什么,“123”是一个数字,“123”;是一个字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多