我一直在使用class 来拆分某些给定分隔符String[] split(String)
的String
任何字符串,并且效果很好。
但是,现在预计将使用StringTokenizer
. 但是使用其中一个有什么区别和好处。
另外,我觉得在单个调用中String[]
返回的选项比使用类的对象更有效。split()
StringTokenizer
我一直在使用class 来拆分某些给定分隔符String[] split(String)
的String
任何字符串,并且效果很好。
但是,现在预计将使用StringTokenizer
. 但是使用其中一个有什么区别和好处。
另外,我觉得在单个调用中String[]
返回的选项比使用类的对象更有效。split()
StringTokenizer
看看JavaDocs
StringTokenizer 是一个遗留类,出于兼容性原因保留,但不鼓励在新代码中使用它。建议任何寻求此功能的人改用 String 的 split 方法或 java.util.regex 包。
以下示例说明了如何使用 String.split 方法将字符串分解为其基本标记:
String[] result = "this is a test".split("\\s"); for (int x=0; x<result.length; x++) System.out.println(result[x]);
读这个
StringTokenizer 是一个遗留类,出于兼容性原因保留,但不鼓励在新代码中使用它。建议任何寻求此功能的人改用 String 的 split 方法或 java.util.regex 包。
我有以下程序,
字符串“x”是一个制表符分隔的 12s34;
public class Testoken {
public static void main(String[] args) {
String x = "1 2 s 3 4 ";
StringTokenizer st = new StringTokenizer(x,"\t");
int i = 0;
while(st.hasMoreTokens()){
System.out.println("token-->"+st.nextToken());
i++;
}
System.out.println("i-->"+i);//elements from tokenizer
String [] a = x.split("\t");
System.out.println("length--->"+a.length);
for(int y = 0;y<a.length;y++){
System.out.println("value-->"+a[y]);//elements from split
}
}
}
Output:
token-->1
token-->2
token-->s
token-->3
token-->4
i-->5
length--->8
value-->1
value-->2
value-->s
value-->
value-->3
value-->
value-->
value-->4
String#split
接受一个正则表达式是否StringTokenizer
只接受一个String
将拆分字符串的。您应该始终坚持使用String#split
,它比 StringTokenizer 更强大。
http://docs.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html 说:
StringTokenizer 是一个遗留类,出于兼容性原因保留,但不鼓励在新代码中使用它。建议任何寻求此功能的人改用 String 的 split 方法或 java.util.regex 包。
所以我想说,不要改变它,把那条线展示给建议重构它的人。也许他们有旧信息或其他很好的理由告诉你。