【问题标题】: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,您的问题没有提供帮助您所需的信息。重写您的问题并提供更多信息,可能是示例代码并描述您要实现的目标。

标签: c# string split dataset


【解决方案1】:
  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(','));
  1. 如果您想忽略重复,可以添加 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.";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 2018-05-30
      • 1970-01-01
      • 2023-03-18
      • 2012-08-11
      相关资源
      最近更新 更多