どうも、ちょげ(@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()は、文字列を空白で分割したリストに変換します。
使用例
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();
コメント