我的字符串是这样的:
string input = "STRIP, HR 3/16 X 1 1/2 X 1 5/8 + API";
实际上我想提取最后一个词'API'并返回。
进行上述提取的C#代码是什么?
答案 0 :(得分:60)
嗯,天真的实现就是简单地拆分每个空格并取最后一个元素。
使用String对象上的实例方法完成拆分,可以使用数组索引或使用Last LINQ运算符检索最后一个元素。
最终结果:
string lastWord = input.Split(' ').Last();
如果你没有LINQ,我会在两个操作中完成:
string[] parts = input.Split(' ');
string lastWord = parts[parts.Length - 1];
虽然这适用于此字符串,但它可能不适用于略有不同的字符串,因此您要么必须弄清楚如何相应地更改代码,要么发布所有规则。
string input = ".... ,API";
这里,逗号将是“单词”的一部分。
此外,如果第一种获取单词的方法是正确的,即最后一个空格后的所有内容,并且您的字符串符合以下规则:
然后你可以使用这个代码在堆上分配更少的对象,以便以后担心:
string lastWord = input.Substring(input.LastIndexOf(' ') + 1);
但是,如果你需要考虑逗号,分号和诸如此类的东西,那么使用分割的第一种方法是最好的;要跟踪的事情要少。
答案 1 :(得分:15)
首先:
using System.Linq; // System.Core.dll
然后
string last = input.Split(' ').LastOrDefault();
// or
string last = input.Trim().Split(' ').LastOrDefault();
// or
string last = input.Trim().Split(' ').LastOrDefault().Trim();
答案 2 :(得分:7)
var last = input.Substring(input.LastIndexOf(' ')).TrimStart();
此方法不像其他字符串那样分配整个字符串数组。
答案 3 :(得分:3)
string workingInput = input.Trim();
string last = workingInput.Substring(workingInput.LastIndexOf(' ')).Trim();
虽然如果字符串中没有空格,这可能会失败。我认为分裂是不必要的密集只是为了一个词:)
答案 4 :(得分:2)
var lastWord = input.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries).Last();
答案 5 :(得分:2)
static class Extensions
{
private static readonly char[] DefaultDelimeters = new char[]{' ', '.'};
public string LastWord(this string StringValue)
{
return LastWord(StringValue, DefaultDelimeters);
}
public string LastWord(this string StringValue, char[] Delimeters)
{
int index = StringValue.LastIndexOfAny(Delimeters);
if(index>-1)
return StringValue.Substring(index);
else
return null;
}
}
class Application
{
public void DoWork()
{
string sentence = "STRIP, HR 3/16 X 1 1/2 X 1 5/8 + API";
string lastWord = sentence.LastWord();
}
}
答案 6 :(得分:0)
string input = "STRIP, HR 3/16 X 1 1/2 X 1 5/8 + API";
var a = input.Split(' ');
Console.WriteLine(a[a.Length-1]);