#author("2020-04-17T22:46:58+09:00","","") #author("2020-04-17T22:48:53+09:00","","") #navi(../) * String.Splitで空要素を残す、空要素を削除するオプションについて [#c43c8407] String.Splitを使って分割した時、空要素はいらない!または、空っぽの要素も必要!の場合は、~ ''StringSplitOptions''を指定することにより、空っぽの要素を削除するか残すかを指定することができます。~ 以下にC#とVisual Basicのサンプルコードと動作結果を紹介します。 #contents * 関連サイト [#n0152088] -[[Microsoft .NET | StringSplitOptions 列挙型>https://docs.microsoft.com/ja-jp/dotnet/api/system.stringsplitoptions]] -[[Microsoft .NET | String クラス>https://docs.microsoft.com/ja-jp/dotnet/api/system.string]] * 動作確認環境 [#p0dcd7d0] - Windows 10 - Visual Studio 2019 - .NET Core 3.1 - コンソールアプリケーション #htmlinsert(windev-top.html) * StringSplitOptions 列挙型 について [#g8c51cb2] サンプルコードを紹介する前に、StringSplitOptions 列挙型について説明します。~ String.Splitに渡すことが可能な StringSplitOptions は以下の通りです。~ -[[Microsoft .NET | StringSplitOptions 列挙型>https://docs.microsoft.com/ja-jp/dotnet/api/system.stringsplitoptions]]から抜粋 |None|0|戻り値には、空の文字列を含む配列要素が格納されます。| |RemoveEmptyEntries|1|戻り値には、空の文字列を含む配列要素は格納されません。| よって、StringSplitOptions.''None'' を指定すれば空要素は残ります。~ StringSplitOptions.''RemoveEmptyEntries'' を指定すれば空要素は削除されます。 * サンプルコード [#y1f7eb64] 以下に C#, Visual Basic のサンプルコードと実行結果を記します。 ** C# [#qcbe2b78] 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); } } ** Visual Basic [#a6bd3552] 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 ** 実行結果 [#x8c4beb9] 上記のサンプルコードを実行した時の出力になります。 #ref(01.png) 以上、String.Splitを使って分割するときに、空要素を残す、空要素を削除する方法を指定できる~ StringSplitOptionsのご紹介でした。