String.Splitを使って分割した時、空要素はいらない!または、空っぽの要素も必要!の場合は、
StringSplitOptionsを指定することにより、空っぽの要素を削除するか残すかを指定することができます。
以下にC#とVisual Basicのサンプルコードと動作結果を紹介します。
サンプルコードを紹介する前に、StringSplitOptions 列挙型について説明します。
String.Splitに渡すことが可能な StringSplitOptions は以下の通りです。
None | 0 | 戻り値には、空の文字列を含む配列要素が格納されます。 |
RemoveEmptyEntries | 1 | 戻り値には、空の文字列を含む配列要素は格納されません。 |
よって、StringSplitOptions.None を指定すれば空要素は残ります。
StringSplitOptions.RemoveEmptyEntries を指定すれば空要素は削除されます。
以下に C#, Visual Basic のサンプルコードと実行結果を記します。
using System; class Program { static void Main(string[] args) { string str = "a,b,c,,e,,g"; Console.WriteLine("- StringSplitOptions.None"); string[] split1 = str.Split(",", StringSplitOptions.None); Console.WriteLine("要素数:" + split1.Length); string join1 = string.Join(",", split1); // 配列に格納された要素をカンマ区切り文字列にする Console.WriteLine(join1); Console.WriteLine("- StringSplitOptions.RemoveEmptyEntries"); string[] split2 = str.Split(",", StringSplitOptions.RemoveEmptyEntries); Console.WriteLine("要素数:" + split2.Length); string join2 = string.Join(",", split2); // 配列に格納された要素をカンマ区切り文字列にする Console.WriteLine(join2); } }
Imports System Module Program Sub Main(args As String()) Dim str As String = "a,b,c,,e,,g" Console.WriteLine("- StringSplitOptions.None") Dim split1 As String() = str.Split(",", StringSplitOptions.None) Console.WriteLine("要素数:" & split1.Count) Dim join1 As String = String.Join(",", split1) '配列に格納された要素をカンマ区切り文字列にする Console.WriteLine(join1) Console.WriteLine("- StringSplitOptions.RemoveEmptyEntries") Dim split2 As String() = str.Split(",", StringSplitOptions.RemoveEmptyEntries) Console.WriteLine("要素数:" & split2.Count) Dim join2 As String = String.Join(",", split2) '配列に格納された要素をカンマ区切り文字列にする Console.WriteLine(join2) End Sub End Module
上記のサンプルコードを実行した時の出力になります。
以上、String.Splitを使って分割するときに、空要素を残す、空要素を削除する方法を指定できる
StringSplitOptionsのご紹介でした。