C# 从数组中查找大写的最后一个单词

C# 从数组中查找大写的最后一个单词,c#,arrays,linq,C#,Arrays,Linq,我正在处理一个问题,我需要在数组中找到大写的最后一个单词 我已经将所有行拆分为单词: string[]words=Regex.Split(e,sk) 我在尝试这样的事情 z=words.Where(c=>c==c.ToUpper().Last()) 但无论如何这都没用 也许有人有一些建议?您对Last()的调用应该在lambda之外(请参阅) words.LastOrDefault(c=>c==c.ToUpper())是否符合您的需要?因为你需要最后一场比赛 可能有更好的方法来检测字符串是否为大

我正在处理一个问题,我需要在数组中找到大写的最后一个单词

我已经将所有行拆分为单词:

string[]words=Regex.Split(e,sk)

我在尝试这样的事情

z=words.Where(c=>c==c.ToUpper().Last())

但无论如何这都没用

也许有人有一些建议?

您对
Last()
的调用应该在lambda之外(请参阅)

words.LastOrDefault(c=>c==c.ToUpper())
是否符合您的需要?因为你需要最后一场比赛

可能有更好的方法来检测字符串是否为大写,例如
c.All(Char.IsUpper)
,因此您可以使用

words.LastOrDefault(c => c.All(Char.IsUpper))
Last()
的调用应该在lambda之外(请参阅)

words.LastOrDefault(c=>c==c.ToUpper())
是否符合您的需要?因为你需要最后一场比赛

可能有更好的方法来检测字符串是否为大写,例如
c.All(Char.IsUpper)
,因此您可以使用

words.LastOrDefault(c => c.All(Char.IsUpper))
使用此LINQ查询:

z = words.Where(c =>c.All(Char.IsUpper)).Last(); 
或者按照另一个答案
LastOrDefault
中的建议,如果没有大写的完整字符串,则获取
null
字符串。

使用此LINQ查询:

z = words.Where(c =>c.All(Char.IsUpper)).Last(); 


或者按照另一个答案
LastOrDefault
中的建议,如果没有大写完整的字符串,则获取
null
字符串。

“bool”不包含“Last”的定义,并且找不到接受“bool”类型的第一个参数的扩展方法“Last”(您是否缺少using指令或程序集引用?这就是我要说的。)getting@Martin如果您使用的是VS,那么应该有一个“建议修复”的东西(IIRC,它是Ctrl+)使用以下命令自动添加directive@Martin此查询有效,我一分钟前已更改,可能您尝试了错误的版本,请重试。@MaksimSimkin一切正常,但我在控制台中不断出错:序列不包含任何内容elements@Martin您的输入是什么?“bool”不包含“Last”的定义,也没有扩展名m可以找到接受类型为“bool”的第一个参数的ethod“Last”(您是否缺少using指令或程序集引用?这就是我要说的getting@Martin如果您使用的是VS,那么应该有一个“建议修复”的东西(IIRC,它是Ctrl+)使用以下命令自动添加directive@Martin此查询有效,我一分钟前已更改,可能您尝试了错误的版本,请重试。@MaksimSimkin一切正常,但我在控制台中不断出错:序列不包含任何内容elements@Martin您的输入是什么?这是一个好主意,扩展自己的答案复制下面的答案:)您没有完全正确地复制它。另一个答案作为方法组传递
Char.IsUpper
。您的示例没有这样做,并且会生成编译器错误。请删除额外的括号或将其更改为类似
words.LastOrDefault(c=>c.All(ch=>Char.IsUpper(ch)))
这是一个好主意,扩展自己的答案复制下面的答案:)您没有完全正确地复制它。另一个答案作为方法组传递
Char.IsUpper
。您的示例没有这样做,并且会生成编译器错误。请删除额外的括号或将其更改为类似
words.LastOrDefault(c=>c.All)的内容(ch=>char.IsUpper(ch))
什么是
e
sk
?这里可能不需要正则表达式…如果你是在空格上进行拆分的话。无论哪种方式,正则表达式对于在已经拆分的字符串中查找单词(这就是
单词
是什么)的问题都无关紧要。根据我必须使用正则表达式的任务,下面的解决方案适用于任何
IEnumerable
@pinkfloydx33。'e'是一行。在main函数中,我读取所有行,只使用foreach来获取每一行。这是因为我还需要执行多个任务,所以我需要获取每一行。'sk'是分隔符,字符串sk=“[\\s,;:/?!\ \ \-]”;什么是
e
sk
?这里可能不需要正则表达式…如果你是在空格上拆分的话。无论哪种方式,正则表达式对于在已经拆分的字符串中查找单词(这就是
单词
是什么)的问题都无关紧要。根据我必须使用正则表达式的任务,下面的解决方案适用于任何
IEnumerable
@pinkfloydx33。'e'是一行。在main函数中,我读取所有行,只使用foreach来获取每一行。这是因为我还需要执行多个任务,所以我需要获取每一行。'sk'是分隔符,字符串sk=“[\\s,;:/?!\ \-]+”;