在Java中可以使用 String.split(regex)
来分割字符串。举个列子:
String phone = "012-3456789"; String[] output = phone.split("-"); System.out.println(output[0]); System.out.println(output[1]);
输出:
012 3456789
注意:String.split(regex)接受一个正则表达式作为参数,注意处理好特殊字符串,像句号、逗号。
1. 以句号或逗号分割字符串
注意句号、分号是特殊字符,需要特殊处理,在正则表达式中用//.表示,或者用Pattern.quote方法表示。
TestSplit.java
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
有时在分割字符串之前需要对字符串进行一些检查,如:
package com.codecloud.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 例子
另外,还可以用 StringTokenizer
来分割字符串。从JDK1.0开始便可以使用 StringTokenizer
,JDK1.4开始才有 String.split()
。
package com.codecloud.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()); } } }
注意:StringTokenizer是老版本对方法,不鼓励使用,推荐使用 String.split()
。