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のご紹介でした。