使用StringTokenizer和String.split()之间的区别?
我一直在使用String[] split(String)
的String
类来拆分某个给定分隔符的任何字符串,并且它工作正常。
但是,现在预计会使用StringTokenizer
重新考虑相同的逻辑。 但是使用一个而不是另一个有什么区别和好处。
另外,我觉得在单个调用中split()
返回的String[]
比使用StringTokenizer
类的对象更有效。
– > String.split()
和Pattern.split()
为您提供了一个简单的语法来完成后者,但这基本上就是他们所做的一切。 如果要解析生成的字符串,或者根据特定标记中途更改分隔符,它们将无法帮助您。
– > StringTokenizer
比String.split()
更具限制性,并且使用起来也有些小问题。 它主要用于拉出由固定子串分隔的标记。 由于这个限制,它的速度大约是String.split()
两倍。 (请参阅我对String.split()
和StringTokenizer
。)它也早于正则表达式API,其中String.split()
是其中的一部分。
您将从我的时间中注意到, String.split()
仍可在几毫秒内在典型计算机上对数千个字符串进行标记。 此外,它具有优于StringTokenizer
的优势,它可以将输出作为字符串数组提供,这通常是您想要的。 使用StringTokenizer
提供的Enumeration
在大多数情况下过于“语法上挑剔”。 从这个角度来看, StringTokenizer
现在有点浪费空间,你也可以使用String.split()
。
从这个链接回答
看看JavaDocs
StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它。 建议任何寻求此function的人都使用String的split方法或java.util.regex包。
以下示例说明了如何使用String.split方法将字符串拆分为其基本标记:
String[] result = "this is a test".split("\\s"); for (int x=0; x
String#split
接受一个正则表达式, StringTokenizer
是否只接受一个String
,用于分割字符串。 你应该始终坚持String#split
,它比StringTokenizer更强大。
读这个
StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它。 建议任何寻求此function的人都使用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[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
http://docs.oracle.com/javase/6/docs/api/java/util/StringTokenizer.html说:
StringTokenizer是一个遗留类,出于兼容性原因而保留,尽管在新代码中不鼓励使用它。 建议任何寻求此function的人都使用String的split方法或java.util.regex包。
所以我想说,不要改变它,并向推荐重构它的人展示这一点。 也许他们有旧的信息或其他很好的理由告诉你。
这是一个链接回答(从我的角度来看)这个问题: http : //lavnish.blogspot.com/2008/05/stringsplit-vs-stringtokenizer.html