スライドショー

【C#入門】String.Splitで文字列を分割(複数文字、文字数でも分割)

String.Splitメソッドって使ってますか?

C#ではStringクラスのSplitメソッドを使うと、文字列を指定の区切り文字で分割し配列に格納することができます。

この記事では、Splitメソッドについて

  • String.Splitメソッドとは
  • Splitメソッドの使い方
  • 複数の文字で分割
  • リストに格納する
  • 文字数で分割
  • 正規表現で分割

など基本的な内容から、応用的な内容についても解説していきます。

今回はSplitメソッドについて、使い方をわかりやすく解説します!

String.Splitメソッドとは

String.SplitメソッドとはStringクラスメソッドの一つで、文字列を指定した区切り文字で分割し配列に格納する場合に使います

区切り文字以外にも、文字列でも分割することができます。また、区切り文字や文字列は配列で指定することで複数指定することができます。

オプションとしてStringSplitOptions.RemoveEmptyEntriesを指定すると、分割され格納される配列の要素が空の場合は省略することができます。

Splitメソッドはいろいろな区切り文字、文字列で分割することが多いので、それぞれの場合について詳しくみていきましょう。

Splitメソッドの使い方

ここでは一つの区切り文字、文字列で分割する場合についてみていきます。

スペースで分割

文字列中に含まれるスペースで文字列を分割する方法についてみていきましょう。

  1. using System;
  2.  
  3. namespace Sample
  4. {
  5. class Sample
  6. {
  7. static void Main()
  8. {
  9. string str = "侍 エンジニア 塾";
  10. string[] arr = str.Split(' ');
  11. Console.WriteLine("{0}", string.Join(", ", arr));
  12. Console.ReadKey();
  13. }
  14. }
  15. }

実行結果:

  1. 侍, エンジニア,

カンマで分割

次は文字列中に含まれる「,」(カンマ)で文字列を分割する場合です。

  1. using System;
  2.  
  3. namespace Sample
  4. {
  5. class Sample
  6. {
  7. static void Main()
  8. {
  9. string str = "侍,エンジニア,塾";
  10. string[] arr = str.Split(',');
  11. Console.WriteLine("{0}", string.Join(" ", arr));
  12. Console.ReadKey();
  13. }
  14. }
  15. }

実行結果:

  1. エンジニア

改行コードで分割

文字列中に含まれる改行コード「rn」で文字列を分割する場合も確認しておきましょう。

C#の場合改行コードは「rn」2文字で表します。

文字列で分割する場合は、その文字列を格納した配列とStringSplitOptionsを引数に指定する必要があります。

  1. using System;
  2.  
  3. namespace Sample
  4. {
  5. class Sample
  6. {
  7. static void Main()
  8. {
  9. string str = "侍rnエンジニアrn塾";
  10. string[] del = {"rn"};
  11. string[] arr = str.Split(del, StringSplitOptions.None);
  12. Console.WriteLine("{0}", string.Join(", ", arr));
  13. Console.ReadKey();
  14. }
  15. }
  16. }

実行結果:

  1. 侍, エンジニア,

文字列で分割

それでは、文字列で分割する方法についても確認しましょう。

  1. using System;
  2.  
  3. namespace Sample
  4. {
  5. class Sample
  6. {
  7. static void Main()
  8. {
  9. string str = "侍エンジニア塾";
  10. string[] del = {"エンジニア"};
  11. string[] arr = str.Split(del, StringSplitOptions.None);
  12. Console.WriteLine("{0}", string.Join(", ", arr));
  13. Console.ReadKey();
  14. }
  15. }
  16. }

実行結果:

  1. 侍,

複数の文字で分割

Splitメソッドは複数の区切り文字を配列で指定することができます。

それでは「(」、「)」という2つの文字で分割してみましょう。

  1. using System;
  2.  
  3. namespace Sample
  4. {
  5. class Sample
  6. {
  7. static void Main()
  8. {
  9. string str = "侍(エンジニア)塾";
  10. char[] del = {'(', ')'};
  11. string[] arr = str.Split(del);
  12. Console.WriteLine("{0}", string.Join(", ", arr));
  13. Console.ReadKey();
  14. }
  15. }
  16. }

実行結果:

  1. 侍, エンジニア,

リストに格納する

Splitメソッドの戻り値は配列ですので、リストに格納するには型の変換が必要です。

リスト型オブジェクトからAddRangeメソッドを使って、配列を空のリストに追加します。

  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Sample
  5. {
  6. class Sample
  7. {
  8. static void Main()
  9. {
  10. string str = "侍,エンジニア,塾";
  11. string[] arr = str.Split(',');
  12. var list = new List<string>();
  13. list.AddRange(arr);
  14. Console.WriteLine("{0}", string.Join(" ", list));
  15. Console.ReadKey();
  16. }
  17. }
  18. }

実行結果:

  1. エンジニア

AddRangeメソッドなどの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【C#入門】Add、RemoveでListの要素を追加、削除する方法
更新日 : 2019年5月22日

文字数で分割

Splitメソッドは文字数を指定して文字列を分割することはできません

文字数を指定して文字列を分割するには、独自のメソッドを作る必要があります。

拡張メソッドを作って、Splitメソッドと同じように呼び出せるようにしてみましょう。

  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Sample
  5. {
  6. // 拡張クラス
  7. static class Sample
  8. {
  9. static void Main()
  10. {
  11. string str = "侍エンジニア塾";
  12. string[] arr = str.MySplit(3);
  13. Console.WriteLine("{0}", string.Join(", ", arr));
  14. Console.ReadKey();
  15. }
  16. // 拡張メソッド
  17. static string[] MySplit(this string str, int count) {
  18. var list = new List<string>();
  19. int length = (int)Math.Ceiling((double)str.Length / count);
  20. for(int i = 0; i < length; i++) {
  21. int start = count * i;
  22. if(str.Length <= start) {
  23. break;
  24. }
  25. if(str.Length < start + count) {
  26. list.Add(str.Substring(start));
  27. } else {
  28. list.Add(str.Substring(start, count));
  29. }
  30. }
  31. return list.ToArray();
  32. }
  33. }
  34. }

実行結果:

  1. 侍エン, ジニア,

Substringメソッドの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。

【C#入門】String.Substringで文字列の指定部分を抜き出す方法
更新日 : 2019年4月19日

正規表現で分割

StringクラスのSplitメソッドでは正規表現を使って分割することはできません

正規表現とはいくつかの文字列を一つの形式でまとめて表現するための表現方法のことです。主な正規表現については下記のとおりになります。

記号記号の説明例の説明
.任意の1文字。改行文字は除く。.+任意の文字列
*直前の1文字の0回以上の繰り返しと一致hoge*hogeもしくはhogee...と一致
^行の先頭^[0-9]行頭が数字
$行の末尾^.{10}$10文字の行
[ ]カッコ内の任意の1文字と一致。「-」で範囲指定可。[a-z]小文字のアルファベット1文字と一致
[^ ]カッコ内の任意の1文字と不一致。「-」で範囲指定可。[^A-Z]大文字のアルファベット以外
+直前の文字の1個以上の繰り返しと一致hoge+hogee...と一致
?直前の文字の0または1文字と一致hoge?eと一致
{ }カッコ内の数値の繰り返しと一致{n}直前の文字のn個の繰り返しと一致
{,n}直前の文字のn個以下の繰り返しと一致
{m,}直前の文字のm個以上の繰り返しと一致
{m,n}直前の文字のm個以上、n個以下の繰り返しと一致
|直前、直後どちらかのパターンに一致hoge|piyohogeまたはpiyo
( )カッコ内をグループ化。マッチした内容は参照可。

正規表現を使って分割するには、System.Text.RegularExpressions.RegexクラスのSplitメソッドを使う必要があります。

  1. using System;
  2. using System.Text.RegularExpressions;
  3.  
  4. namespace Sample
  5. {
  6. class Sample
  7. {
  8. static void Main()
  9. {
  10. string str = "〒100-0005 東京都千代田区丸の内1丁目";
  11. string pattern = "[〒 都道府県市区町村]";
  12. string[] arr = Regex.Split(str, pattern);
  13. Console.WriteLine("{0}", string.Join(", ", arr));
  14. Console.ReadKey();
  15. }
  16. }
  17. }

実行結果:

  1. , 100-0005, 東京, 千代田, 丸の内1丁目

まとめ

ここでは、Splitメソッドについて説明しました。

Splitメソッドは区切り文字や文字列で文章を分割することができます。使いこなすことができるように、この記事を何度も参考にして下さいね!

LINEで送る

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

undefined