ITEEDU

Java Gossip: 分离字符串

将字符串依所设定的条件予以分离是很常见的操作,例如指令的分离,文本文件的数据读出等等,以后者而言,当您在文本文件中储存以下的资料时,在读入档案后,将可以使用String的split()来协助每一格的资料分离。

假设在文本文件中有如下的内容,每笔数据中是以tab分开:

cater        64/5/26    093900230    25433343
momor    67/3/26    0939123456    5434233

下面这个程序是一个简单的范例,假设String对象的数据就是档案中的一行文字数据:

StringSplit.java
public class StringSplit {
	public static void main(String args[]) {
		String strOfReaded1 =
		"cater?64/5/26?0939002302?5433343";
		String[] tokens = strOfReaded1.split("\t");
		for(String token : tokens) {
			System.out.print(token + "\t");
		}
		System.out.println();
	}
}

执行结果:

cater?64/5/26?0939002302?5433343

split()依您所设定的分隔设定,将字符串分为数个子字符串并以String数组传回,再来看一个例子,假设您的文本文件内容每笔数据是以','分隔:

cater,64/5/26,0939002302,5433343
momor,67/3/26,0939123456,5434233

StringSplit.java
public class StringSplit {
	public static void main(String args[]) {
		String strOfReaded2 =
		"cater,64/5/26,0939002302,5433343";
		tokens = strOfReaded2.split(",");
		for(String token : tokens) {
			System.out.print(token + "\t");
		}
		System.out.println();
	}
}

执行结果:

cater?64/5/26?0939002302?5433343

这边简单的介绍了一下split()方法的使用,有人可能会想到 java.util.StringTokenizer,基本上API中明确的表示它已经是遗产类别(Legacy class)了,存在的原因是为了旧程序的兼容性,不建议在您撰写新程序时使用,使用split()来代替会是个好的方案,而且您还可以进一步 使用正则表示式 来进行字符串分离。