比较两个字符串以不同的顺序
我有串,每个看起来像列表的字典:比较两个字符串以不同的顺序
"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;
}
a显然这最终是错误的。不过,我想考虑它是真实的,因为它只有不同的顺序。 我能做什么?
回答:
您需要拆分一个分隔符:
var searchString = "beginning|middle|middle2|end"; var searchList = searchString.Split('|');
var stringsWithPipes = new List<string>();
stringsWithPipes.Add("beginning|middle|middle2|end");
...
return stringsWithPipes.Select(x => x.Split('|')).Any(x => Match(searchList,x));
然后你就可以实现匹配以多种方式
首先是必须包含所有的搜索词,但也包括其他人。
bool Match(string[] search, string[] match) { return search.All(x => match.Contains(x));
}
或者必须是所有的搜索短语不能包含他人。
bool Match(string[] search, string[] match) { return search.All(x => match.Contains(x)) && search.Length == match.Length;
}
回答:
试试这个::
if(stringWithPipes.Any(P => P.split('|') .All(K => "beginning|middle2|middle|end".split('|')
.contains(K)))
希望这将帮助!
回答:
您可以在|
分割你的字符串,然后分割字符串进行比较,然后用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;
}
}
这一定能够优化一起,但上面是做的一种方式。
回答:
这应该有效。
List<string> stringsWithPipes = new List<string>(); stringsWithPipes.Add("beginning|middle|middle2|end");
string[] stringToVerifyWith = "beginning|middle2|middle||end".Split(new[] { '|' },
StringSplitOptions.RemoveEmptyEntries);
if (stringsWithPipes.Any(s => !s.Split('|').Except(stringToVerifyWith).Any()))
{
return true;
}
拆分将删除由双打|
创建的任何空条目。然后,如果使用Except
方法删除每个常见元素,则检查剩下的部分。如果没有剩下任何东西(! [...] .Any()
,.Count() == 0
也是有效的),它们都包含相同的元素。
以上是 比较两个字符串以不同的顺序 的全部内容, 来源链接: utcz.com/qa/258437.html