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
表現]