文字列を改行や区切り文字で分割して、文字列の配列にするコードを紹介します。
概要
文字列を改行や区切り文字で分割する場合は、StringオブジェクトのSplit()メソッドを利用します。
書式
charに分割する区切り文字を与えます。戻り値は区切り文字で分割された、string型の配列になります。区切り文字は結果には含まれません。
区切り文字には複数の区切り文字を与えることもできます。第一引数に区切り文字の配列を与えます。
区切り文字が1文字ではない場合は、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