C# 使用linq检查数组中是否有任何单词不包含元音
我正试着检查是否有单词没有元音。我期待的答案是肯定或否定 这是我的代码:C# 使用linq检查数组中是否有任何单词不包含元音,c#,arrays,linq,C#,Arrays,Linq,我正试着检查是否有单词没有元音。我期待的答案是肯定或否定 这是我的代码: string sentence = "I'm thinking about buying a house in the mountains."; string[] words = sentence.Split(' '); //1. Check if any words do not contain a vowel IEnumerable<string> query1 = words .Where
string sentence = "I'm thinking about buying a house in the mountains.";
string[] words = sentence.Split(' ');
//1. Check if any words do not contain a vowel
IEnumerable<string> query1 = words
.Where(n => !n.Contains("a")
|| !n.Contains("e")
|| !n.Contains("o")
|| !n.Contains("i")
|| !n.Contains("r"));
string-sense=“我正在考虑在山里买房子。”;
字符串[]单词=句子。拆分(“”);
//1. 检查是否有任何单词不包含元音
IEnumerable query1=单词
其中(n=>!n.Contains(“a”)
||!n.Contains(“e”)
||!n.包含(“o”)
||!n.包含(“i”)
||!n.包含(“r”);
如何获得答案?您想使用
&&
而不是|
,然后您可以简单地使用任何方法,如下所示:
bool some_words_do_not_have_a_vowel = words
.Where(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"))
.Any();
bool some_words_do_not_have_a_vowel =
words
.Any(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"));
在这种情况下,您可以将Where
去掉,如下所示:
bool some_words_do_not_have_a_vowel = words
.Where(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"))
.Any();
bool some_words_do_not_have_a_vowel =
words
.Any(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"));
请注意,这是区分大小写的。您可能希望改为执行不区分大小写的搜索
顺便说一句,r不是元音。您想使用&
而不是|
,然后您可以简单地使用任何方法,如下所示:
bool some_words_do_not_have_a_vowel = words
.Where(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"))
.Any();
bool some_words_do_not_have_a_vowel =
words
.Any(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"));
在这种情况下,您可以将Where
去掉,如下所示:
bool some_words_do_not_have_a_vowel = words
.Where(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"))
.Any();
bool some_words_do_not_have_a_vowel =
words
.Any(n => !n.Contains("a") && !n.Contains("e") && !n.Contains("o") && !n.Contains("i") && !n.Contains("r"));
请注意,这是区分大小写的。您可能希望改为执行不区分大小写的搜索
顺便说一句,r不是元音。要获取没有元音的单词集合,可以检查元音集合:
var vowels = new char[] { 'a', 'i', 'u', 'e', 'o', 'A', 'I', 'U', 'E', 'O' };
然后检查每个字符串(单词)集合中是否包含元音。您只接受不包含任何元音的单词:
var query = words.Where(x => !x.ToCharArray().Any(c => vowels.Contains(c)); //get words without vowels.
如果您想检查这些单词中是否有来自所有集合的元音。只需将查询结果与以下内容一起使用:
bool result = query.Any();
或者,您甚至可以根据原始字符串检查结果。要获取没有元音的单词集合,您可以查看元音集合:
var vowels = new char[] { 'a', 'i', 'u', 'e', 'o', 'A', 'I', 'U', 'E', 'O' };
然后检查每个字符串(单词)集合中是否包含元音。您只接受不包含任何元音的单词:
var query = words.Where(x => !x.ToCharArray().Any(c => vowels.Contains(c)); //get words without vowels.
如果您想检查这些单词中是否有来自所有集合的元音。只需将查询结果与以下内容一起使用:
bool result = query.Any();
或者您甚至可以根据原始字符串检查结果。继续您的操作,我认为您应该使用&&而不是| |您是在问这个句子是否包含元音,还是想从这个句子中找到不包含元音的单词?您有什么理由想使用linq解决它吗?继续您的操作,我认为你应该使用&&而不是| |你是在问这个句子是否包含元音,还是想从这个句子中找到不包含元音的单词?你想用linq解决这个问题的原因是什么?也许你还想检查大写元音(例如“I”)。“I'm”没有小写元音。也许您还需要检查大写元音(例如“I”)。“I'm”没有小写元音。