String.split (regex)

String phone = "012-3456789";
	String[] output = phone.split("-");
	System.out.println(output[0]);
	System.out.println(output[1]);

输出量

012
	3456789

注意
此split (regex)将正则表达式作为参数,请记住转义正则表达式的特殊字符 ,例如句点/点。

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示例

StringTokenizer类来拆分字符串。 这是因为StringTokenizer类自JDK 1.0起可用,而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()

参考文献

  1. Java文档String.split
  2. Java StringTokenizer
  3. Java正则表达式
  4. 维基百科:正则表达式

标签: Java 拆分





翻译自: https://mkyong.com/java/java-how-to-split-a-string/