无论如何我们可以直接访问stringTokenizer中的某个(比方说20)元素。我不时地只需要一个元素而不需要其他元素,但我必须遍历所有元素。
编辑:我也想忽略空元素。
我错过了什么吗?
答案 0 :(得分:5)
您可以使用String.split
代替Tokenizer
。
例如:
String[] split = "you string is splitting".split(" ");
split[2]; // random access to the 3rd element of split
当然,在访问其子索引之前,您需要检查您的split
实际上是否有那么多元素。
答案 1 :(得分:3)
您可以尝试使用Apache Commons Lang的StringUtils类,它可以分割字符串,同时忽略空元素并为您处理null
字符串。
令牌化器必须至少读取n个令牌才能确定哪个是第n个令牌。因此,使用String#split()
或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"]
答案 2 :(得分:0)
Tokenizer用于按顺序访问元素(有点像LinkedList
)。您必须遍历所有令牌并将其存储在某种随机访问集合(ArrayList
)中,或使用其他方法拆分原始字符串/流。