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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

Как и в другом ответе, но terser:

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

Ответ 5

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