Разделите строку, разделенную запятыми, при удалении пробелов и пустых записей

Я хотел преобразовать строку, разделенную запятыми, в строковый массив, а также удалить пробельные и пустые записи. Например, с учетом ввода:

string valueString = "sam, mike,   , ,john  , Tom and jerry  , ";

Ожидаемым результатом будут следующие значения (обрезанные, конечно):

sam
mike
john
Tom and Jerry

Я пробовал следующую строку кода, которая обрезает значения, но это не удаляет "пустые" записи:

valueString.Split(',').Select(sValue => sValue.Trim()).ToArray();

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

Ответ 1

Использование Trim с StringSplitOptions.RemoveEmptyEntries не работает, потому что " " не считается пустой записью. Вам нужно сделать обычный сплит, а затем обрезать каждый элемент, а затем отфильтровать пустые строки.

valueString.Split(',')
    .Select(x => x.Trim())
    .Where(x => !string.IsNullOrWhiteSpace(x))
    .ToArray();

Ответ 2

Основываясь на ответе от Anthony, это также преобразует его обратно в строку с разделителями-запятыми:

valueString = string.Join(",", valueString.Split(',')
    .Select(x => x.Trim())
    .Where(x => !string.IsNullOrWhiteSpace(x))
    .ToArray())