概要 | splitとは(文字列を分割して配列にする) |
区切り文字 | カンマで区切る |
半角スペースで区切る | |
タブで区切る | |
スラッシュで区切る | |
改行で区切る | |
ドットで区切る | |
空文字で区切る(1文字ずつ配列にする) | |
末尾が区切り文字の時、最後は要素になる? | |
正規表現 | 正規表現で区切り文字をORで指定 |
2つ目の引数 | 取得する要素数を指定 |
list | 文字列をsplitで分割してリストにする |
splitとは(文字列を分割して配列にする)
public String[ ] split(String regex) |
- splitは、文字列を分割してString型の配列を返します。
- 引数は、区切り文字の場合は文字列を区切り文字で区切ります。
正規表現の場合は文字列を正規表現で区切ります。 - Stringクラスのメソッドです。
- 以下はJava8 API仕様のsplitメソッドのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#split-java.lang.String-
カンマで区切る
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
}
}
splitメソッドで文字列をカンマで区切って配列にしています。
半角スペースで区切る
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
}
}
splitメソッドで文字列を半角スペースで区切って配列にしています。
タブで区切る
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
}
}
splitメソッドで文字列をタブで区切って配列にしています。
スラッシュで区切る
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
}
}
3行目は、年月日をスラッシュで区切っています。
5行目は、スラッシュで区切って配列にしています。
バックスラッシュ2つでバックスラッシュのエスケープシーケンスを表します。
改行で区切る
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を意味します。
ドットで区切る
public class Test1 {
public static void main(String[] args) {
String str = "test.txt";
String arr[] = str.split("\\.");
for (String a : arr) {
System.out.println(a); //test txt
}
}
}
正規表現のドットではなく、文字としてのドットを表すため\でエスケープを行います。
空文字で区切る(1文字ずつ配列にする)
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
}
}
3行目の文字列は、区切り文字がありません。
splitメソッドの引数は空文字です。その場合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
String array2[] = str1.split(",",-1);
System.out.println(array2.length); // 4
String str2 = "a,b,c,,";
String array3[] = str2.split(",");
System.out.println(array3.length); // 3
String array4[] = str2.split(",",-1);
System.out.println(array4.length); // 5
String str3 = "a,,c";
String array5[] = str3.split(",");
System.out.println(array5.length); // 3
}
}
4,11行目の文字列は、末尾がカンマで終わっています。
5行目は区切り文字にカンマを指定していますが要素は3つになります。
空文字も要素として取得する場合は8行目のように2つめの引数を負の数(例:-1)にします。
正規表現で区切り文字をORで指定
正規表現で区切り文字をコロン(:)とカンマ(,)にします。
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
}
}
[,:]は、カンマ(,)またはコロン(:)という正規表現です。
取得する要素数を指定
public String[ ] split(String regex,int 要素数) |
2つ目の引数は戻り値の配列の要素数の上限になります。
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
}
}
splitメソッドの2つ目の引数が3です。戻りの配列の要素数は3つになります。
文字列をsplitで分割してリストにする
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
}
}
}
10行目は、splitメソッドで文字列を配列にしています。
11行目は、CollectionクラスのaddAllメソッドで配列からリストを作成しています。
関連の記事