Какой самый чистый способ удалить все лишние пробелы из строки, помеченной запятой пользователя, в массив

В программе есть пользователи, которые вводят строку с разделителями-запятыми в массив:

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();
}

Ответ 7

Сначала я разделил текст на ",", а затем использовал метод Trim для удаления пробелов в начале и в конце каждой строки. Это добавит поддержку строки с пробелами в ваш код.