Java – 文字列を分割する方法
文字列を分割するには `String.split(regex)`を使います。次の例を確認してください。
String phone = "012-3456789"; String[]output = phone.split("-"); System.out.println(output[0]); System.out.println(output[1]);
出力
012 3456789
1.ピリオド/ドットを分割する
ピリオド/ドットは正規表現の特殊文字です。ダブルバックラッシュ `\\。`でエスケープするか、 `Pattern.quote`メソッドを使用しなければなりません。
TestSplit.java
package com.mkyong.test import java.util.regex.Pattern; public class TestSplit { public static void main(String[]args) { String test = "abc.def.123"; String[]output = test.split("\\."); //alternative //String[]output = test.split(Pattern.quote(".")); System.out.println(output[0]); System.out.println(output[1]); System.out.println(output[2]); } }
出力
abc def 123
分割前の一般的なチェック。
TestSplit.java
package com.mkyong.test import java.util.regex.Pattern; public class TestSplit { public static void main(String[]args) { String test = "abc.def.123"; if(test.contains(".")){ String[]output = test.split("\\."); if(output.length!=3){ throw new IllegalArgumentException(test + " - invalid format!"); }else{ System.out.println(output[0]); System.out.println(output[1]); System.out.println(output[2]); } }else{ throw new IllegalArgumentException(test + " - invalid format!"); } } }
2. StringTokenizerの例
昔、Java開発者は
StringTokenizer`クラスを使用して文字列を分割したがっています。これは、JDK 1.0以来 `StringTokenizer`クラスが利用可能であり、
String.split() `がJDK 1.4以降に利用可能であるためです
TestSplit.java
package com.mkyong.test import java.util.StringTokenizer; public class TestSplit { public static void main(String[]args) { String test = "abc.def.123"; StringTokenizer token = new StringTokenizer(test, "."); while (token.hasMoreTokens()) { System.out.println(token.nextToken()); } } }
出力
abc def 123
-
注意** この `StringTokenizer`は互換性の理由から残されたレガシークラスですが、使用はお勧めできません! `string.split()`を使用してください。
参考文献
doc String.split]。
http://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html
[Java
StringTokenizer]。
http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
[Java
正規表現]。
https://en.wikipedia.org/wiki/Regular__expression
[Wikipedia:Regular
表現]