比较两个字符串以不同的顺序

我有串,每个看起来像列表的字典:比较两个字符串以不同的顺序

"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.ExceptEnumerable.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

回到顶部