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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS