转载

Java 中分割字符串的正确姿势

在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()

正文到此结束
Loading...