Сбросить символы после пробела в строке C # - PullRequest
12 голосов
/ 21 октября 2009

Я хотел бы удалить оставшиеся символы (которые могут быть любыми) в моей строке после того, как я встретил пробел.
Например. Я бы хотел, чтобы строка «10 1/2» стала «10»;
В настоящее время я использую Split, но это выглядит как перебор:

string TrimMe = "10 1/2";
string[] cleaned = TrimMe.Split(new char[] {' '});
return string[0];

Я чувствую, что должен быть более легкий путь.

Ответы [ 5 ]

11 голосов
/ 21 октября 2009

Некоторые другие опции:

string result = Regex.Match(TrimMe, "^[^ ]+").Value;
// or
string result = new string(TrimMe.TakeWhile(c => c != ' ').ToArray());

Тем не менее, то, с чего вы начали, намного проще и понятнее.

EDIT: оба решения будут обрабатывать пустые строки, возвращать оригинал, если пробелы не найдены, и возвращать пустую строку, если она начинается с пробела.

11 голосов
/ 21 октября 2009

Это должно работать:

Int32 indexOfSpace = TrimMe.IndexOf(' ');
if (indexOfSpace == 0)
    return String.Empty; // space was first character
else if (indexOfSpace > 0)
    return TrimMe.Substring(0, indexOfSpace);
else
    return TrimMe; // no space found
7 голосов
/ 21 октября 2009

Мне нравится это для удобства чтения:

trimMe.Split(' ').First();
5 голосов
/ 21 октября 2009

Аналогично другому ответу, но более кратко:

int indexSpace = trimMe.IndexOf(" ");
return trimMe.Substring(0, indexSpace >= 0 ? indexSpace : trimMe.Length);
1 голос
/ 21 октября 2009

Разделение - это, вероятно, ваше самое элегантное / простое решение. Другие варианты включают регулярные выражения и / или анализ / лексический анализ. И то, и другое будет сложнее, чем приведенный вами пример.

...