如何判断一个字符串是否包含字符串列表中的任何项?

22
我有一个字符串和一个字符串列表:
string motherString = "John Jake Timmy Martha Stewart";

我想查找该字符串是否包含列表中的任何字符串,即:

var children = new List<string>{"John", "Mike", "Frank"};

我想知道motherString是���包含children中的任意一个元素,例如“John”。

最好的方法是什么?


2
母串中的所有单词都会用空格分隔吗?如果有一个子项“John”,而motherString包含“Johnathan”,您是否希望返回成功? - Luke Baulch
不,我想要精确匹配。 - Coder 2
1
检查更新的解决方案 :) - Luke Baulch
1个回答

43

我能想到的最简单的代码是:

var hasAny = children.Any(motherString.Contains);

如果你希望每个单词都以空格分隔,那么你可以使用这个:

var hasAny = motherString.Split(new[] { ' ' }).Any(children.Contains);

如果母字符串中的单词可以由其他字符分隔开,您可以像这样添加它们:

motherString.Split(new[] { ' ', ',', ':' })

3
将近4年过去了,这个简单而伟大的解决方案依然有效。谢谢! - hardba11
1
忽略大小写,变量hasAny表示是否存在任何一个子字符串,满足母字符串包含它(使用StringComparison.OrdinalIgnoreCase)。 - John Arundell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接