繁体   English   中英

使用C#从字符串中提取最后一个单词

[英]Extract the last word from a string using C#

我的字符串是这样的:

string input = "STRIP, HR 3/16 X 1 1/2 X 1 5/8 + API";

实际上,我想在这里提取最后一个词“ API”,然后返回。

进行上述提取的C#代码是什么?

好吧,简单的实现是在每个空间上拆分并采用最后一个元素。

使用String对象上的实例方法进行拆分,并且可以使用数组索引或使用Last LINQ运算符来检索最后一个元素。

最终结果:

string lastWord = input.Split(' ').Last();

如果您没有LINQ,我将分两个步骤进行:

string[] parts = input.Split(' ');
string lastWord = parts[parts.Length - 1];

尽管此方法适用于此字符串,但它可能不适用于稍有不同的字符串,因此您要么必须弄清楚如何相应地更改代码,要么发布所有规则。

string input = ".... ,API";

在这里,逗号将成为“单词”的一部分。

另外,如果第一种获取单词的方法是正确的,那就是最后一个空格之后的所有内容,并且您的字符串遵循以下规则:

  • 始终至少包含一个空格
  • 不以一个或多个空格结尾(在这种情况下,您可以修剪它)

然后,您可以使用以下代码,该代码将在堆上分配较少的对象供GC使用,以供日后使用:

string lastWord = input.Substring(input.LastIndexOf(' ') + 1);

但是,如果需要考虑逗号,分号等,则最好使用分割的第一种方法; 需要跟踪的东西更少。

第一:

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();

var last = input.Substring(input.LastIndexOf(' ')).TrimStart();

此方法不会像其他方法那样分配整个字符串数组。

string workingInput = input.Trim();
string last = workingInput.Substring(workingInput.LastIndexOf(' ')).Trim();

尽管如果字符串中没有空格,这可能会失败。 我认为只用一个词就不需要太多的拆分了:)

var lastWord = input.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries).Last();
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();
    }
}
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]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM