Какой самый чистый способ удалить все лишние пробелы из строки, помеченной запятой пользователя, в массив
В программе есть пользователи, которые вводят строку с разделителями-запятыми в массив:
basketball, baseball, soccer ,tennis
Между запятыми могут быть пробелы или, может быть, нет.
Если эта строка была просто split()
в запятой, то некоторые элементы в массиве могут иметь пробелы до или после них.
Каков наилучший способ очистки этого?
Ответы
Ответ 1
Вы можете использовать Regex.Split для этого:
string[] tokens = Regex.Split("basketball, baseball, soccer ,tennis", @"\s*,\s*");
Регулярное выражение \s*,\s*
может быть прочитано как: "совместить ноль или более символов пробела, за которым следует запятая, за которой следуют ноль или более символов пробела".
Ответ 2
string[] values = delimitedString.Split(',').Select(s => s.Trim()).ToArray();
Ответ 3
Вы можете разделить на запятую или пробел и удалить пустые записи (между запятой и пробелом):
string[] values = delimitedString.Split(new char[]{',',' '}, StringSplitOption.RemoveEmptyEntries);
Edit:
Однако, поскольку это не работает со значениями, которые содержат пробелы, вместо этого вы можете разделить возможные варианты, если ваши значения могут содержать пробелы:
string[] values = delimitedString.Split(new string[]{" , ", " ,", ", ", ","}, StringSplitOptions.None);
Ответ 4
string s = "ping pong, table tennis, water polo";
string[] myArray = s.Split(',');
for (int i = 0; i < myArray.Length; i++)
myArray[i] = myArray[i].Trim();
Это сохранит пробелы в записях.
Ответ 5
Разделите элементы в запятой:
string[] splitInput = yourInput.Split(',', StringSplitOption.RemoveEmptyEntries);
а затем используйте
foreach (string yourString in splitInput)
{
yourString.Trim();
}
Ответ 6
String.Replace( "," " ) перед тем, как разбить строку
Ответ 7
Сначала я разделил текст на ",", а затем использовал метод Trim для удаления пробелов в начале и в конце каждой строки. Это добавит поддержку строки с пробелами в ваш код.