我想以大写字母显示句子中的最后一个单词,但它只会选择最后一个单词或大写字母。
这是我的代码:
string sentence = "write LINQ queries to do the following";
string[] words = sentence.Split(' ');
IEnumerable<string> query =
from w in words
select w.Last()
.ToUpper;
答案 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。