无论如何我们可以直接访问 stringTokenizer 中的某个(比如说第 20 个)元素。偶尔我只需要其中的某个元素,不需要其他元素,但我必须遍历所有元素。
编辑:我也想忽略空元素。
我错过了什么吗?
无论如何我们可以直接访问 stringTokenizer 中的某个(比如说第 20 个)元素。偶尔我只需要其中的某个元素,不需要其他元素,但我必须遍历所有元素。
编辑:我也想忽略空元素。
我错过了什么吗?
您可以使用String.split
它而不是Tokenizer
.
例如:
String[] split = "you string is splitting".split(" ");
split[2]; // random access to the 3rd element of split
当然,在访问它的子索引之前,您需要检查您的split
实际有那么多元素。
您可以尝试 Apache Commons Lang 的StringUtils类,它可以拆分字符串,同时忽略空元素并null
为您处理字符串。
分词器必须至少读取 n 个令牌才能确定哪个是第 n 个。因此,使用String#split()
or创建一个字符串数组可能更容易StringUtils.split(...)
。
请注意,我更喜欢StringUtils.split(...)
,因为如果我不想要它们,它不会返回空元素,即StringUtils.split(",a,b,c;;d,e,,f",";,");
会返回["a","b","c","d","e","f"]
而String#split()
会返回["","a","b","c","","d","e","","f"]
Tokenizer 旨在按顺序访问元素(有点像 a LinkedList
)。您必须检查所有令牌并将它们存储在某种随机访问集合(ArrayList
)中,或者使用另一种方法来拆分您的原始字符串/流。