他们本质上是课程的马。
Scanner
设计用于需要解析字符串,提取不同类型数据的情况。它非常灵活,但是可以说它并没有给你提供最简单的API来简单地获取由特定表达式分隔的字符串数组。String.split()
并Pattern.split()为
你提供了执行后者的简单语法,但这实际上就是他们所做的全部。如果你想解析结果字符串,或根据特定标记在中途更改定界符,它们将无济于事。StringTokenizer
比更具限制性String.split()
,并且使用起来也比较麻烦。它本质上是为提取由固定子字符串分隔的令牌而设计的。由于此限制,速度约为的两倍String.split()
。(请参阅与String.split()
和的比较StringTokenizer
。)它也早于正则表达式API,而正则表达式API是其中String.split()
的一部分。
你会从我的计时中注意到,在典型的机器上,String.split()
它仍然可以在几毫秒内标记成千上万个字符串。此外,它的优点还StringTokenizer
在于它可以将输出作为字符串数组提供给你,这通常是你想要的。在大多数情况下,使用Enumeration
所提供的StringTokenizer
,在语法上过于挑剔。从这个角度来看,StringTokenizer
如今有点浪费空间,你不妨使用String.split()
。



