String类的split方法以及StringTokenizer
split方法可以根据指定的表达式regex将一个字符串分割成一个子字符串数组。
它的参数有两种形式,也即:split(String regex)和split(String regex, int limit),其中split(String regex)实际上是通过调用split(String regex, int limit)来实现的,limit的值为0。那么,当limit>0和limit<0时都代表着什么呢?
在jdk中时这样解释的:当limit>0子数组的长度最大为limit,也就是如果可能的话可以进行limit-1次分割,余下的作为一个子字符串(除非经过limit-1次已经把字符串分割完毕);
limit<0时表示数组的长度没有限制;
limit=0时字符串尾部的空字符串会舍去。
例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果:
Regex Limit 结果 : 2 { "boo", "and:foo" } : 5 { "boo", "and", "foo" } : -2 { "boo", "and", "foo" } o 5 { "b", "", ":and:f", "", "" } o -2 { "b", "", ":and:f", "", "" } o 0 { "b", "", ":and:f" }
StringTokenizer类是出于兼容性的原因而被保留的遗留类,因此,我们应尽量使用String类的split方法。