Отбросить символы после пробела в строке С#
Я хотел бы отбросить оставшиеся символы (которые могут быть любыми символами) в моей строке после того, как я столкнулся с пробелом.
Например. Я хотел бы, чтобы строка "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 - это, пожалуй, самое элегантное и простое решение. Другие варианты включают регулярные выражения и/или анализ/лексический анализ. Оба будут более сложными, чем пример, который вы предоставили.