文字列を改行や区切り文字で分割し、文字列の配列に変換する - Split メソッドによる文字列の分割 - C#

文字列を改行や区切り文字で分割して、文字列の配列にするコードを紹介します。

概要

文字列を改行や区切り文字で分割する場合は、StringオブジェクトのSplit()メソッドを利用します。

書式

charに分割する区切り文字を与えます。戻り値は区切り文字で分割された、string型の配列になります。区切り文字は結果には含まれません。
string[] Split(char)

区切り文字には複数の区切り文字を与えることもできます。第一引数に区切り文字の配列を与えます。
string[] Split(char[])

区切り文字が1文字ではない場合は、String型を与えるメソッドを利用できます。
string[] Split(string)
string[] Split(string[])

プログラム

UI

下図のUIを作成します。テキストボックスを2つ、ボタンを1つ配置します。テキストボックスの一つはMultilineプロパティをTrueに設定し複数行テキストボックスにします。

コード

以下のコードを記述します。実質はButton1のClickイベントの実装になります。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace StringSplit
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      string[] lines = textBox1.Text.Split('|');
      for (int i = 0; i < lines.Length; i++) {
        textBox2.Text += lines[i]+"\r\n";
      }
    }
  }
}

解説

下記の行でtextBox1に入力された文字列をSplitメソッドで分割します。分割する区切り文字はSplitメソッドの第一引数に与えた"|"の文字で分割します。分割した結果は戻り値で返り lines配列に代入されます。
  string[] lines = textBox1.Text.Split('|');

forループによりlines配列の値をテキストボックスに1行ずつ表示します。
  for (int i = 0; i < lines.Length; i++) {
    textBox2.Text += lines[i]+"\r\n";
  }

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


上部のテキストボックスに
Penguin|Duck|Bear|Whale|Panda
を入力します。入力後"button1"をクリックします。


処理結果が下部のテキストボックスに表示されます。"|" の文字で区切られた内容が表示されています。

カンマで区切る場合

カンマで区切る場合は、先のプログラムのbutton1のクリックイベントのコードを下記に変更します。Splitメソッドに与える引数を","に変更します。
    private void button1_Click(object sender, EventArgs e)
    {
      string[] lines = textBox1.Text.Split(',');
      for (int i = 0; i < lines.Length; i++) {
        textBox2.Text += lines[i]+"\r\n";
      }
    }

複数の区切り文字で処理する場合

複数の区切り文字で処理する場合は、先のプログラムのbutton1のclickイベントのコードを下記のコードに変更します。Splitメソッドの第一引数にchar[]型の配列を与えることで複数の区切り文字で分割できます。
    private void button1_Click(object sender, EventArgs e)
    {
      string[] lines = textBox1.Text.Split(new char[] { '/' , '-'});
      for (int i = 0; i < lines.Length; i++) {
        textBox2.Text += lines[i]+"\r\n";
      }
    }

2文字以上の区切り文字で処理する場合

区切り文字が2文字以上になる場合は、先のプログラムのbutton1のclickイベントのコードを下記コードに変更します。Splitメソッドの第一引数にstring[]型の配列を与えることで、複数の2文字以上の区切り文字で入力された文字列を分割できます。
    private void button1_Click(object sender, EventArgs e)
    {
      string[] lines = textBox1.Text.Split(new string[] { "::", "--" }, StringSplitOptions.None);
      for (int i = 0; i < lines.Length; i++) {
        textBox2.Text += lines[i]+"\r\n";
      }
    }

改行で区切る場合

Splitメソッドを利用して改行コードで分割することもできます。改行コードで分割する場合は、先のプログラムのbutton1のclickイベントを下記のコードに変更します。

    private void button1_Click(object sender, EventArgs e)
    {
      string[] lines = textBox1.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);
      for (int i = 0; i < lines.Length; i++) {
        textBox2.Text += lines[i]+"\r\n";
      }
    }

実行結果

実行結果は下記となります。入力文字列が
str = "Penguin\r\nDuck\r\nCamel\r\n"
の場合は以下の結果となります。
stra[0] = Penguin
stra[1] = Duck
stra[2] = Camel

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2021-08-24
改訂日: 2021-08-24
作成日: 2010-06-17
iPentec all rights reserverd.