Подтвердить что ты не робот

Извлеките последнее слово из строки с помощью С#

Моя строка выглядит так:

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

Здесь на самом деле я хочу извлечь последнее слово, "API" и вернуться.

Каким будет код С# для выполнения вышеуказанного извлечения?

4b9b3361

Ответ 1

Ну, наивная реализация для этого заключалась бы в том, чтобы просто разбить на каждое пространство и взять последний элемент.

Разделение выполняется с использованием метода экземпляра на объекте 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);

Однако, если вам нужно рассмотреть запятые, точки с запятой и многое другое, первым методом, использующим разделение, является наилучшее; Есть меньше вещей, чтобы отслеживать.

Ответ 2

Во-первых:

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

Ответ 3

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

Этот метод не выделяет целый массив строк, как это делают другие.

Ответ 4

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

Хотя это может завершиться неудачно, если в строке нет пробелов. Я думаю, что расщепление излишне интенсивно только для одного слова:)

Ответ 5

var lastWord = input.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries).Last();

Ответ 6

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

Ответ 7

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