[Java] split 文字列を分割して配列にする

Javaのsplitメソッドで、文字列を分割して配列にするサンプルです。

目次

サンプル splitとは(文字列を分割して配列にする)
  カンマで区切る / 半角スペースで区切る / タブで区切る
  スラッシュで区切る / 改行で区切る / 1文字ずつ配列にする
  正規表現で区切り文字をORで指定
  取得する要素数を指定 / 文字列の末尾が空文字の時も要素として取得
  文字列をsplitで分割してリストにする

splitとは(文字列を分割して配列にする)

public String[ ] split(String regex)

カンマで区切る

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "a,b,c";

		String arr1[] = str1.split(",");
		for (String a : arr1) {
			System.out.println(a); //a b c
		}
		System.out.println(arr1.length);//3
 	}
}

7行目は、splitメソッドで文字列をカンマで区切って配列にしています。

半角スペースで区切る

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "a b c";

		String arr1[] = str1.split(" ");
		for (String a : arr1) {
			System.out.println(a); //a b c
		}
		System.out.println(arr1.length);//3
 	}
}

7行目は、splitメソッドで文字列を半角スペースで区切って配列にしています。

タブで区切る

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "a	b	c";

		String arr1[] = str1.split("\t");
		for (String a : arr1) {
			System.out.println(a); //a b c
		}
		System.out.println(arr1.length);//3
 	}
}

7行目は、splitメソッドで文字列をタブで区切って配列にしています。

スラッシュで区切る

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "2020/05/21";

		String arr1[] = str1.split("\\/");
		for (String a : arr1) {
			System.out.println(a); //2020 05 21
		}
		System.out.println(arr1.length);//3
 	}
}

5行目は、年月日をスラッシュで区切っています。
7行目は、スラッシュで区切って配列にしています。(バックスラッシュ2つ(円記号)+/)
バックスラッシュ2つでバックスラッシュのエスケープシーケンスを表します。

改行で区切る

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "赤と黄\r\n青と緑";

		String arr1[] = str1.split("\r\n|\n");
		for (String a : arr1) {
			System.out.println(a); //赤と黄 青と緑
		}
		System.out.println(arr1.length);//2
 	}
}

正規表現で改行を指定しています。
\r\nは復帰改行(CRLF)、\nは改行(LF)、パイプ(|)はorを意味します。

1文字ずつ配列にする

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "abc";

		String arr1[] = str1.split("");
		for (String a : arr1) {
			System.out.println(a); //a b c
		}
		System.out.println(arr1.length); // 3
 	}
}

5行目は、区切り文字はありません。
7行目のsplitメソッドの引数は空文字です。その場合1文字ずつ配列になります。

正規表現で区切り文字をORで指定

正規表現で区切り文字をコロン(:)とカンマ(,)にします。

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "1:a,2:b,3:c";

		String arr1[] = str1.split("[,:]");
		for (String a : arr1) {
			System.out.println(a); //1 a 2 b 3 c
		}
		System.out.println(arr1.length);//6
 	}
}

7行目の[,:]は、カンマ(,)またはコロン(:)という正規表現です。

取得する要素数を指定

public String[ ] split(String regex,int 要素数) 

2つ目の引数は戻り値の配列の要素数の上限になります。

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "a,b,c,d,e,f,g";
		
		String arr1[] = str1.split(",",3);
		for (String a : arr1) {
			System.out.println(a); //「a」「b」「c,d,e,f,g」
		}
		System.out.println(arr1.length); // 3
 	}
}

7行目は、2つ目の引数が3です。戻りの配列の要素数は3つになります。

文字列の末尾が空文字の時も要素として取得

文字列の末尾が空文字の時で要素として取得する場合は2つめの引数に負の値(-1)を指定します。

package test1;

public class Test1 {
	public static void main(String[] args) {
		String str1 = "a,b,c,,";
		
		String array1[] = str1.split(",");
		System.out.println(array1.length); // 3
		for (String a : array1) {
			System.out.println(a); //「a」「b」「c」
		}
		String array2[] = str1.split(",",-1);
		System.out.println(array2.length); // 5
		for (String a : array2) {
			System.out.println(a); //「a」「b」「c」「」「」
		}
 	}
}

5行目は、末尾がカンマで終わっています。
7行目はsplitメソッドのカンマで区切っていますが結果は8,10行目のように要素は3つになります。
空文字も要素として取得する場合は12行目のように2つめの引数を負の数(例:-1)にします。

文字列をsplitで分割してリストにする

package test1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test1 {
	public static void main(String[] args) {
        List<String> list1 = new ArrayList<>(); // リストを作成
		String str1 = "a,b,c";

		String array1[] = str1.split(",");
        Collections.addAll(list1, array1); //配列からリストを作成
		for (String a : list1) {
			System.out.println(a); //a b c
		}
 	}
}

11行目は、splitメソッドで文字列を配列にしています。
12行目は、CollectionクラスのaddAllメソッドで配列からリストを作成しています。

関連の記事

[Java] substring 文字列を切り出す
[Java] replace 文字列を置換するサンプル
Java 文字列の位置を取得(indexOf/lastIndexOf)

△上に戻る