.net column
.NET開発者のためのブログメディア

分割

StringクラスのSplitメソッドの使い方|文字列の分割方法

 
PG
カンマ区切りのCSVファイルをアップロードして、プログラム内部でカンマを使って文字列を分割したいのですが、何か良い方法はありますか?すいません。教えてください!!
PL
文字列の分割で思いつくのはSplitメソッドですね。C#でコーディングしているのなら、String.Splitを使ってみてください。

C#のStringクラスのSplitメソッドについて


.NET Framework 2.0から搭載されたString.Splitメソッドは、指定した文字で文字列を分割し、配列に格納してくれるとても便利な命令です。
第1パラメータで指定した文字列配列の要素で対象となる文字列を分割します。以降のサンプルプログラムでは”X”で分割するように指定しています。第2パラメータでは、戻り値に空白の配列要素を含めるかどうかをオプションで指定できます。

「StringSplitOptions.RemoveEmptyEntries」を指定すると空白は含めない、「StringSplitOptions.None」を指定すると、空白を含めることになります。オプションですのでもちろん省略可です。戻り値の配列は文字列で設定されます。
次にサンプルプログラムを見ながら実際の動作を確認していきましょう。

StringクラスのSplitメソッドの基本構文

String.Splitメソッドの基本構文は以下の様になります。
string[] splitted =文字列.Split(separator, nums, options)
separator:区切り文字か区切り文字列
nums:個数指定(任意),
options:オプション(任意)

例えば以下のような文字列があります。

これを文字’X’を区切り文字、分割後の文字列で空白を無視するコードは以下になります。
StringSplitOptions.RemoveEmptyEntriesは空白を無視するというオプションです。

StringクラスのSplitメソッドの使い方8つ

これよりseparatorに区切り文字や区切り文字列、正規表現などを指定した例と、個数指定を使ったコード例を提示します。

Visual Studio Community 2019でWindows フォームアプリケーション(.Net Framework 4.8)のプロジェクトにて作成しています。
フォーム上にbutton1~button10まで計10個のボタンを張り付けて順に使用しています。

1:文字列で分割する方法

以下に文字列で分割するサンプルを提示します。

string[] splitted =文字列.Split(separator, options)
separator:区切り文字列{ “XX” }を指定します。
options:オプションにStringSplitOptions.Noneを指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

2:複数の区切り文字を配列で指定する方法

以下に複数の区切り文字を配列で指定して文字列を分割するサンプルを提示します。

string[] splitted =文字列.Split(separator, options)
separator:複数の区切り文字として配列{ ‘X’, ‘2’ }を指定します。
options:オプションにStringSplitOptions.RemoveEmptyEntriesを指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

3:カンマで文字列を分割する方法

以下にカンマで文字列を分割するサンプルを提示します。

string[] splitted =文字列.Split(separator, options)
separator:区切り文字に’,’を指定します。
options:オプションにStringSplitOptions.RemoveEmptyEntriesを指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

4:改行コードで文字列を分割する方法

以下に改行コードで文字列を分割するサンプルを提示します。

string[] splitted =文字列.Split(separator, options)
separator:区切り文字列に”\r\n”を指定します。
options:オプションにStringSplitOptions.RemoveEmptyEntriesを指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

5:スペースで文字列を分割する方法

以下にスペースで文字列を分割するサンプルを提示します。

string[] splitted =文字列.Split(separator, options)
separator:区切り文字に’ ‘を指定します。
options:オプションにStringSplitOptions.RemoveEmptyEntriesを指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

6:スラッシュで文字列を分割する方法

以下にスラッシュ(/)で文字列を分割するサンプルを提示します。

string[] splitted =文字列.Split(separator, options)
separator:区切り文字に’/’を指定します。
options:オプションにStringSplitOptions.RemoveEmptyEntriesを指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

7:文字列または正規表現を指定する方法

以下に正規表現([2|4])で文字列を分割するサンプルを提示します。

string[] splitted =Regex.Split(文字列, pattern)
pattern:区切り文字列に”[2|4]”を指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

8:非負の整数で分割する数を制限する方法

以下に非負の整数で文字列を分割するサンプルを提示します。

string[] splitted =文字列.Split(separator, nums)
separator:区切り文字列に’,’を指定します。
nums:個数に非負の整数を指定します。

上のサンプルプログラムを実行すると、以下のように表示されます。

Splitメソッドの応用

拡張メソッドとはstaticなクラスで第一引数にthisキーワードを修飾子に持つstaticなメソッドです。

ここでは以下のような2つの拡張メソッドを作成して、使用する例を提示します。
・文字数を指定して文字列を分割するメソッド
・正規表現を使って分割するメソッド

文字数を指定して文字列を分割する方法

拡張メソッドを使用して、文字列から指定した文字数を取得するSubstringを実装します。

上記で定義したSubstringの拡張メソッドを使用するサンプルコード以下に提示します。

上のサンプルプログラムを実行すると、以下のように表示されます。

正規表現を使って分割する方法

拡張メソッドを使用して、指定された正規表現で文字を分割するコードを実装します。

上記で定義した正規表現の拡張メソッドを使用するサンプルコード以下に提示します。

上のサンプルプログラムを実行すると、以下のように表示されます。

C#でコーディングするSplitメソッドサンプルプログラム

オプション「StringSplitOptions.RemoveEmptyEntries」を指定します。

実行画面
ボタンを押下しましょう。上記の分割プログラムが実行されて、コンソールで内容を確認できます。

デバッグで停めて戻り値の配列を確認します。オプションで空白文字を返さない命令を設定しているので、含まれていないことを確認できます。

コンソール確認

オプション「StringSplitOptions.None」を指定します。

デバッグで停めて戻り値の配列を確認します。オプションで空白文字を返す命令を設定しているので、空白が含まれていることを確認できます。

コンソール確認

PG
String.Splitメソッドを使用すると簡単に文字列の分割ができました。これでコーディングを進めていきます。
PL
C#で行う文字列分割といえばSplitメソッドです。ファイルアップロードなどではよく利用する命令だと思います。

stringクラスのsplitメソッドでの文字列の分割はよく出てくる!

開発現場では文字列の分割を行う場面は多くあります。C#だけでなく、JavaやPHPを使用して開発を行う場合でも、分割する命令は準備されていますので、ここで利用方法は確実に理解しておくことをおすすめします。
活用方法を知っているととても便利な命令ですので、分割する必要がある場合は、積極的に利用していきましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags