[C#] String.Split メソッドで空白データを除外する


String.Split メソッドに StringSplitOptions 引数を指定すると、空の配列要素が除外される。しかし、実際には空文字で構成されたデータを除外することができない。
ここでいう空の配列要素とは、あくまで区切り文字が連続で続いていたケースのみを指すのだ。

完全に除去したいのなら、ラムダを使用すると一行で消せる。
var ret1 = mail.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
// [1] test1@exsample.com
// [2]
// [3] test2@exsample.com

var ret2 = mail.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).Where(x => !string.IsNullOrWhiteSpace(x));
// [1] test1@exsample.com
// [2] test2@exsample.com

// char で区切り文字を指定すれば、そもそもオプションはいらない。
var ret3 = mail.Split(new char[] { ';' }).Select(x => x.Trim()).Where(x => !string.IsNullOrWhiteSpace(x));
// [1] test1@exsample.com
// [2] test2@exsample.com 

String.Split メソッド
http://msdn.microsoft.com/ja-jp/library/System.String.Split(v=vs.110).aspx

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

コピーした行の挿入が表示されない時はフィルタされていないかチェック