【C#】文字列を分割して配列やリストにする方法【String.Split】

C#で文字列を分割して配列やリストにする方法

C# の String.Split を使うことで、例えば “あ,い,う,え,お” という文字列をコンマ区切りで分割し、1文字ずつの配列やリストにすることができます。

本記事では String.Split を使った文字列の分割方法を紹介します。

文字列を「カンマ区切り」で分割する方法

String.Split の引数には分割に使う文字列を指定します。

文字列をカンマ区切りで分割したい場合は、String.Splitの引数に ,を指定します。

using System;

public class Sample
{
    public static void Main()
    {
        string str = "火,水,雷";
        string[] arr = str.Split(','); // 文字列を「,」で分割
        
        Console.WriteLine("配列の要素数:{0}", arr.Length);
        Console.WriteLine("{0}", string.Join(" ", arr));
    }
}

上記コードでは分割した文字列を string 配列に格納しています。

実行結果

配列の要素数:3
火 水 雷

文字列を「スペース」で分割する方法

文字列をスペース区切りで分割したい場合は、String.Splitの引数に (スペース)を指定します。

using System;

public class Sample
{
    public static void Main()
    {
        string str = "火 水 雷 光 闇";
        string[] arr = str.Split(' ');
        
        Console.WriteLine("配列の要素数:{0}", arr.Length);
        Console.WriteLine("{0}", string.Join(" ", arr));
    }
}

実行結果

配列の要素数:5
火 水 雷 光 闇

文字列を「1文字ずつ」分割する方法

文字列を1文字ずつ分割するには、 String.ToCharArray()メソッドを使用します。

このメソッドを使うと、文字列が1文字ずつ格納された char 型の配列として取得できます。

using System;
 
public class Sample
{
    public static void Main()
    {
        string str = "12345";
        char[] arr = str.ToCharArray();
        
        Console.WriteLine("{0}", string.Join(" ", arr));
    }
}

実行結果

1 2 3 4 5

文字列を「改行ごと」に分割する方法

文字列を改行ごとに分割するには、String.Split の第一引数に new string[] { Environment.NewLine }を指定し、第二引数に StringSplitOptions.Noneを指定します。

using System;
 
public class Sample
{
    public static void Main()
    {
        string str = @"1行目
2行目
3行目";
        
        string[] arr = str.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        
        Console.WriteLine("配列の要素数:{0}", arr.Length);
        
        for (int i = 0; i < arr.Length; i++)
        {
            Console.WriteLine(arr[i]);
        }
    }
}

実行結果

配列の要素数:3
1行目
2行目
3行目

第二引数に指定したStringSplitOptionsにはNoneの他にいくつか種類があります。以下に内容を解説します。

オプション名内容
StringSplitOptions.Noneオプションはなし。
StringSplitOptions.RemoveEmptyEntries分割した結果からの空の文字列を含む配列要素を省略する。
StringSplitOptions.TrimEntries分割結果内の各部分文字列の空白文字をトリミングする。
※ .NET 5 以降のバージョンでのみ使用可能

分割した文字列をリスト型にする方法

分割結果をリスト型 ( List ) にしたい場合は、ToList() メソッドを使用することで実現可能です。

List の使用にはusing System.Collections.Generic;ToList()の使用には using System.Linq;をコード上部で宣言する必要があります。

using System;
using System.Collections.Generic;
using System.Linq;

public class Sample
{
    public static void Main()
    {
        string str = "火,水,雷";
        List<string> strList = str.Split(',').ToList();
        
        Console.WriteLine("リストの要素数:{0}", strList.Count);
        Console.WriteLine("{0}", string.Join(" ", strList));
    }
}

実行結果

リストの要素数:3
火 水 雷

参考リンク

関連記事

【C#】ToString() の書式指定子で文字列をカスタマイズする 【C#】ToString() の書式指定子で文字列をカスタマイズする C#でstring 型の文字列を連結させる6つの方法 【 C# 】文字列を連結させる6つの方法【StringBuilder, Joinなど】