C#:如何查找两个字符串数组是不是包含相同的值

Posted

技术标签:

【中文标题】C#:如何查找两个字符串数组是不是包含相同的值【英文标题】:C# : How to find if two string arrays contains same valuesC#:如何查找两个字符串数组是否包含相同的值 【发布时间】:2017-05-05 11:55:53 【问题描述】:

我有两个逗号分隔的字符串。 A = "M,D,V" 和 B = "V,M"

我必须拆分(',')这个字符串并比较子字符串。

只有当 A 和 B 中存在的子字符串相等且相同时,我才必须执行语句。

请帮助我以最佳方式编写登录信息。

【问题讨论】:

请提供您的代码 这似乎与System.Data.DataSet 无关,这是我所期望的标题和标签。你实际上只是处理字符串吗?鉴于您知道如何拆分,听起来您实际上只是在谈论数组,而拆分部分是无关紧要的。是这样吗?您是否只是在询问检查两个数组在某些方面是否相等?如果是这样: a) 顺序重要吗? b) 重复很重要,例如 "a", "a", "a" 是否意味着比较等于 "a" @unicorn2 productType.Split(',').Intersect(value.Split(','), StringComparer.OrdinalIgnoreCase).Any() 但您可以理解,这只会返回常见元素。 "请帮我以最佳方式编写登录信息。" 请至少提供您(第一次尝试的)非最佳方式 @S7H,您的问题没有提供帮助您所需的信息。重写您的问题并提供更多信息,可能是示例代码并描述您要实现的目标。 【参考方案1】:
    让我们假设顺序很重要,重复也很重要。

例如

 // clearly not the same = false
  var A = "M,D,V";
  var B = "V,M";
// repetition = false
  var A = "M,V";
  var B = "M,V,V";
// same elements but different order = false
  var A = "M,V";
  var B = "V,M";

然后就可以使用了

var answer = A.Split(',').SequenceEqual(B.Split(','));
    如果您想忽略重复,可以添加 Distinct 方法。

var answer = A.Split(',').Distinct().SequenceEqual(B.Split(',').Distinct());

在这种情况下,结果将是:

 // clearly not the same = false
  var A = "M,D,V";
  var B = "V,M";
// repetition = true
  var A = "M,V";
  var B = "M,V,V";
// same elements but different order = false
  var A = "M,V";
  var B = "V,M";

【讨论】:

【参考方案2】:

只有当两个字符串的长度相等时,下面的函数才会比较两个字符串的顺序不同。 注意:长度不同的字符串不能相等。

    public static String compare(String str1, String str2)
    
        String[] strArr1 = str1.Split(',');
        String[] strArr2 = str2.Split(',');
        int itr = 0;
        while (strArr1.Length == strArr2.Length && strArr2.Contains(strArr1[itr]))
        
            itr++;
            if (itr == strArr1.Length)
            
                return "The Strings contains same values.";
            
        
        return "The Strings does not contain same values.";
    

【讨论】:

以上是关于C#:如何查找两个字符串数组是不是包含相同的值的主要内容,如果未能解决你的问题,请参考以下文章

算法:判断两个字符串是不是包含相同的字符

如何从包含字符串中查找数组列表的数量

如何查找数组是不是包含字符串[重复]

如何在二维字符数组中找到相同字符的菱形?

如何在 JavaScript/jQuery 中查找数组是不是包含特定字符串?

如何最有效地测试两个数组是不是包含 C# 中的等效项