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#:如何查找两个字符串数组是不是包含相同的值的主要内容,如果未能解决你的问题,请参考以下文章