web-dev-qa-db-ja.com

空白と空のエントリを削除しながら、コンマ区切りの文字列を分割します

カンマで区切られた文字列を文字列配列に変換し、空白と空のエントリを削除したかったのです。たとえば、次の入力があるとします。

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

期待される結果は次の値になります(もちろん、トリミングされています)。

sam
mike
john
Tom and Jerry

値をトリミングする次のコード行を試しましたが、これは「空の」エントリを削除できません。

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

プロセスを引き起こす可能性のある入力をトリミングし、エントリを空にしてエントリを空にするための最良の方法は何ですか?

21
Sameer

StringSplitOptions.RemoveEmptyEntriesは空のエントリとは見なされないため、" "でトリムを使用しても機能しません。通常の分割を行ってから、各アイテムをトリミングし、空の文字列をフィルターで取り除く必要があります。

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

Anthonyからの回答に基づいて、これはそれをコンマ区切りの文字列にも変換します。

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