Отбросить Символы После Пробела В Строке C#

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

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

Я чувствую, что там должен быть более простой способ.

5 ответов


некоторые другие варианты:

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

однако IMO то, с чего вы начали, намного проще и легче читать.

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


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

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

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

trimMe.Split(' ').First();

похож на другой ответ, но лаконичнее:

int indexSpace = trimMe.IndexOf(" ");
return trimMe.Substring(0, indexSpace >= 0 ? indexSpace : trimMe.Length);

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