このエントリーをはてなブックマークに追加


String.Splitで空要素を残す、空要素を削除するオプションについて

String.Splitを使って分割した時、空要素はいらない!または、空っぽの要素も必要!の場合は、
StringSplitOptionsを指定することにより、空っぽの要素を削除するか残すかを指定することができます。

以下にC#とVisual Basicのサンプルコードと動作結果を紹介します。

関連サイト

動作確認環境

  • Windows 10
  • Visual Studio 2019
  • .NET Core 3.1
  • コンソールアプリケーション


スポンサーリンク

StringSplitOptions 列挙型 について

サンプルコードを紹介する前に、StringSplitOptions 列挙型について説明します。
String.Splitに渡すことが可能な StringSplitOptions は以下の通りです。

  • Microsoft .NET | StringSplitOptions 列挙型から抜粋
    None0戻り値には、空の文字列を含む配列要素が格納されます。
    RemoveEmptyEntries1戻り値には、空の文字列を含む配列要素は格納されません。

よって、StringSplitOptions.None を指定すれば空要素は残ります。
StringSplitOptions.RemoveEmptyEntries を指定すれば空要素は削除されます。

サンプルコード

以下に C#, Visual Basic のサンプルコードと実行結果を記します。

C#

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

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

実行結果

上記のサンプルコードを実行した時の出力になります。

01.png

以上、String.Splitを使って分割するときに、空要素を残す、空要素を削除する方法を指定できる
StringSplitOptionsのご紹介でした。


添付ファイル: file01.png 74件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-04-17 (金) 22:48:53