【问题标题】:String Arrays in c#. Removing elements from one string array which are their in another string arrayc#中的字符串数组。从一个字符串数组中删除在另一个字符串数组中的元素
【发布时间】:2020-05-18 09:15:10
【问题描述】:

我有两个字符串数组 -

            string[] One = new string[3];

            One[0] = "Pen";          
            One[1] = "Pencil";          
            One[2] = "card"; 

和,

            string[] Two = new string[2];

            Two[0] = "card";          
            Two[1] = "drive";      

现在,我想从这两个中创建一个新的字符串数组,这样最终结果不包含 Two 数组的任何元素。即它应该只有“Pen”、“Pencil”。

【问题讨论】:

标签: c# arrays


【解决方案1】:

你可以使用 Linq -

var res = One.Where(x => Two.Find(x) == null);

甚至更好:

        string[] One = new string[3];

        One[0] = "Pen";
        One[1] = "Pencil";
        One[2] = "card";
        string[] Two = new string[2];

        Two[0] = "card";
        Two[1] = "drive";

        var res = One.Except(Two);

【讨论】:

    【解决方案2】:

    你需要类似不相交的东西

             string[] One = new string[3];
    
                One[0] = "Pen";          
                One[1] = "Pencil";          
                One[2] = "card";
    
            string[] Two = new string[2];
    
                Two[0] = "card";          
                Two[1] = "drive";
    
            var nonintersectOne = One.Except(Two);   
            foreach(var str in  nonintersectOne)
               Console.WriteLine(str);
    
            // Or if you want the non intersect from both
            var nonintersectBoth = One.Except(Two).Union(Two.Except(One)).ToArray();
            foreach(var str in  nonintersect)
               Console.WriteLine(str);
    

    输出 1:

    铅笔

    输出 2:

    铅笔

    开车

    【讨论】:

    • 非常正确,已相应更新。将辅助解决方案留给任何可能需要的人。
    • 请不要通过添加多余的内容来混淆答案。
    【解决方案3】:

    这个简单的 linq 查询可以给你结果。

    var res = One.Except(Two);
    

    此外,如果您需要忽略大小写,请使用上述方法的重载版本:

    var res = One.Except(Two, StringComparer.OrdinalIgnoreCase);
    

    或,等价。

    var res  = One.Where(x=>!Two.Contains(x)).ToArray();
    

    【讨论】:

    • 这是使用 linq 的简单方法之一。如果要忽略大小写,则可以使用重载方法:“One.Except(Two, StringComparer.OrdinalIgnoreCase)”
    • 感谢您的回答,我也会更新它。
    猜你喜欢
    • 2013-03-02
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 2020-05-29
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多