我有一本字典,其中包含一个字符串列表,每个字符串看起来像:
"beginning|middle|middle2|end"
现在我想要的是这样做:
List<string> stringsWithPipes = new List<string>();
stringWithPipes.Add("beginning|middle|middle2|end");
...
if(stringWithPipes.Contains("beginning|middle|middle2|end")
{
return true;
}
问题是,我要比较的字符串的构建略有不同,因此它最终更像是:
if(stringWithPipes.Contains(beginning|middle2|middle||end)
{
return true;
}
显然这最终是错误的。但是,我想认为这是真的,因为只是顺序不同。 我能做什么?
最佳答案
您可以在 |
上拆分字符串,然后拆分要比较的字符串,然后将 Enumerable.Except
与 Enumerable.Any
一起使用> 喜欢
List<string> stringsWithPipes = new List<string>();
stringsWithPipes.Add("beginning|middle|middle2|end");
stringsWithPipes.Add("beginning|middle|middle3|end");
stringsWithPipes.Add("beginning|middle2|middle|end");
var array = stringsWithPipes.Select(r => r.Split('|')).ToArray();
string str = "beginning|middle2|middle|end";
var compareArray = str.Split('|');
foreach (var subArray in array)
{
if (!subArray.Except(compareArray).Any())
{
//Exists
Console.WriteLine("Item exists");
break;
}
}
这当然可以优化,但上面是一种方法。
关于c# - 比较两个不同顺序的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17865504/