C# 用大写字母显示句子中的最后一个单词

C# 用大写字母显示句子中的最后一个单词,c#,arrays,linq,C#,Arrays,Linq,我试图用大写字母显示句子中的最后一个单词,但它只会选择最后一个或大写字母 这是我的代码: string sentence = "write LINQ queries to do the following"; string[] words = sentence.Split(' '); IEnumerable<string> query = from w in words select w.Last() .ToUpper; str

我试图用大写字母显示句子中的最后一个单词,但它只会选择最后一个或大写字母

这是我的代码:

 string sentence = "write LINQ queries to do the following";
 string[] words = sentence.Split(' ');
 IEnumerable<string> query =
        from w in words
        select w.Last()
        .ToUpper;
string-sense=“编写LINQ查询以执行以下操作”;
字符串[]单词=句子。拆分(“”);
IEnumerable查询=
从w到文字
选择w.Last()
图珀先生;

您可以先尝试过滤所有大写的单词,然后得到最后一个单词,如下所示:

static IEnumerable<string> getLastWord(string str)
{           
    var upper =  str.Split(' ')
                .Where(s => String.Equals(s, s.ToUpper(),
                            StringComparison.Ordinal)).Reverse().Take(1);

    return upper;

}
静态IEnumerable getLastWord(字符串str)
{           
变量上限=str.Split(“”)
其中(s=>String.Equals(s,s.ToUpper(),
StringComparison.Ordinal().Reverse().Take(1);
返回上;
}

您可以使用linq执行以下操作:

var res = sentence.Split(' ').Last().ToUpper();
或者更有效一点:

var res = sentence.Substring(sentence.LastIndexOf(' ') + 1).ToUpper()

为什么不这样做:在最后加上ToUpper?简单的一行程序。

没有linq,效率会更高

 string res = sentence.Substring(0, sentence.LastIndexOf(' ')+1) + 
sentence.Substring(sentence.LastIndexOf(' ') + 1).ToUpper();

如果您只需要大写形式的最后一个单词,最简单的方法是使用LINQ方法,它与LINQ查询方法相同:

var upperText = sentence.Split(' ').Last().ToUpper();
这假设拆分工作正常,并且末尾没有任何空条目,因此您可能需要添加:

var upperText = sentence.Split(' ').Where(i => !string.IsNullOrEmpty(i)).Last().ToUpper();

这将起作用,其功能与您在上面所做的尝试相同。

使用LINQ在这里效率低下。你可以找到最后一个词,把它放在上面

using System;

public class Test
{
    public static void Main()
    {
         string sentence = "write LINQ queries to do the following";
         int nLastWord = sentence.LastIndexOf(' ');
         string strLastWord = sentence.Substring(nLastWord + 1,
            sentence.Length - nLastWord - 1).ToUpper();

         Console.WriteLine(strLastWord);
    }
}

模拟。

您的意思是希望使用linq以大写形式显示句子的最后一个单词吗?这正是我的意思您提供的示例句子字符串的预期输出是什么?如果最后一个单词(“following”)以大写字母F开头,您希望输出是什么?否。预期输出应该是“following”。因此,您不需要“LINQ”?您当前的代码应该已经返回“following”,我如何使用查询?@sara:-这是使用LINQ方法。你还想做什么?她想像她的例子中那样使用查询表达式,而不是像你一样使用fluent(点)符号。他们都是LINQ,我更喜欢点符号。我不确定这是OP想要的。似乎他们只是想抓住最后一个字,然后大写。无需进行任何筛选。您是否也需要执行
Join
将列表返回到句子字符串?@Ulric根据op对问题的评论,预期输出应为“以下”。