[C#]文字列を空白で分割したリストに変換するには?

C#

どうも、ちょげ(@chogetarou)です。

文字列(string)を空白で分割したリストに変換する方法を紹介します。

スポンサーリンク

方法

文字列(string)を空白で分割したリストに変換する方法は、2つあります。

Split()

ひとつは、Split()を使う方法です。

まず、System.Linqを導入します。

using System.Linq;

次に、文字列からSplit()を呼び出します。

Split()の第1引数に「new char[0]」、第2引数に「StringSplitOptions.RemoveEmptyEntries」を指定します。

そして、Split()からToList()を呼び出します。

//text=対象の文字列
List<string> result = text.Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList();

上記のSplit()とToList()は、文字列を空白で分割したリストに変換します。

もし、タブや改行なども空白として判定したい場合は、第1引数のcharの配列に空白と判定する要素を追加します。

//タブや改行を空白に含める場合
List<string> result = text.Split(new char[] {' ', ' ', '\t', '\n'}, StringSplitOptions.RemoveEmptyEntries).ToList();;

使用例

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

public class Example
{   
	public static void Main()
	{
		string text = "  abc  de fg hi  j  k";
		
		List<string> result = text.Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList();
		
		foreach(string item in result)
		{
		    Console.WriteLine(item);
		}
 	}
}
出力:
abc
de
fg
hi
j
k

正規表現

もうひとつは、正規表現を使う方法です。

まず、RegexとLinqを導入します。

using System.Text.RegularExpressions;
using System.Linq;

次に、Regex.Split()を呼び出します。

そして、Regex.Split()の第1引数に文字列、第2引数に空白の正規表現のパターンを指定します。

//text=対象の文字列
List<string> result = Regex.Split(text, @"\s+").ToList();

上記のRegex.Split()は、文字列を空白で分割したリストに変換します。

文字列の左右に空白がある場合、Regex.Split()は、分割後に左右の空白を残します。

もし、分割後に左右の空白を残したくない場合は、Where()を呼び出します。

//文字列の左右の空白を残したくない場合
List<string> result = Regex.Split(text, @"\s+").Where(s => s != string.Empty).ToList();

使用例

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Linq;

public class Example
{   
	public static void Main()
	{
		string text = "abc  de fg hi  j  k";
		
		List<string> result = Regex.Split(text, @"\s+").ToList();
		
		foreach(string item in result)
		{
		    Console.WriteLine(item);
		}
 	}
}
出力:
abc
de
fg
hi
j
k

使用例2

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Linq;

public class Example
{   
	public static void Main()
	{
		string text = "  abc  de fg hi  j  k";
		
		List<string> result = Regex.Split(text, @"\s+").Where(s => s != string.Empty).ToList();
		
		foreach(string item in result)
		{
		    Console.WriteLine(item);
		}
 	}
}
出力:
abc
de
fg
hi
j
k

まとめ

文字列(string)を空白で分割したリストに変換する方法は、次の2つです。

  • Split()を使う方法
    List<string> result = text.Split(new char[0], StringSplitOptions.RemoveEmptyEntries).ToList();
  • 正規表現を使う方法
    List<string> result = Regex.Split(text, @"\s+").ToList();

コメント

タイトルとURLをコピーしました