Отбросить Символы После Пробела В Строке 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
похож на другой ответ, но лаконичнее:
int indexSpace = trimMe.IndexOf(" ");
return trimMe.Substring(0, indexSpace >= 0 ? indexSpace : trimMe.Length);
Split, вероятно, ваше самое элегантное / простое решение. Другие опции включают регулярные выражения и/или синтаксический / лексический анализ. Оба будут более сложными, чем пример, который вы предоставили.