以大写形式显示句子中的最后一个单词

时间:2016-05-12 12:37:54

标签: 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;

6 个答案:

答案 0 :(得分:1)

你可以使用linq:

var res = sentence.Split(' ').Last().ToUpper();

或者更有效率:

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

答案 1 :(得分:0)

您可以先尝试过滤大写的所有单词并获取最后一个单词:

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

    return upper;

}

<强> DEMO

答案 2 :(得分:0)

为什么不这样做:Extract the last word from a string并在最后添加ToUpper?简单的一个班轮。

答案 3 :(得分:0)

没有linq,它会更有效率

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

答案 4 :(得分:0)

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

var upperText = sentence.Split(' ').Last().ToUpper();

这假设拆分工作正常,并且最后没有任何空条目,因此您可能需要添加:

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

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

答案 5 :(得分:0)

在这里使用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);
    }
}

模拟link