字符串标记器在数组中缺少2个值



我正在创建一个类似的StringTokenizer,并使用令牌填充一个ArrayList

LogUtils.log("saved emails: " + savedString);
StringTokenizer st = new StringTokenizer(savedString, ",");
mListEmailAddresses = new ArrayList<String>();
for (int i = 0; i < st.countTokens(); i++) {
     String strEmail = st.nextToken().toString();
     mListEmailAddresses.add(strEmail);
}
LogUtils.log("mListEmailAddresses: emails: " + mListEmailAddresses.toString());
11-20 09:56:59.518: I/test(6794): saved emails: hdhdjdjdjd,rrfed,ggggt,tfcg,
11-20 09:56:59.518: I/test(6794): mListEmailAddresses: emails: [hdhdjdjdjd, rrfed]

正如您所看到的,mListEmailAddresses在数组末尾缺少2个值。我该怎么办才能解决这个问题。在我看来,代码看起来是正确的,但也许我误解了什么。

谢谢。

使用hasMoreTokens是解决方案

 while(st.hasMoreTokens()){
         String strEmail = st.nextToken().toString();
         mListEmailAddresses.add(strEmail);
 }

使用以下while循环

StringTokenizer st = new StringTokenizer(savedString, ",");
mListEmailAddresses = new ArrayList<String>();
while (st.hasMoreTokens()) {
     String strEmail = st.nextToken();
     mListEmailAddresses.add(strEmail);
}

注意,您不需要调用toStringnextToken将返回字符串。

或者,您可以使用split方法

String[] tokens = savedString.split(",");
mListEmailAddresses = new ArrayList<String>();
mListEmailAddresses.addAll(Arrays.asList(tokens));

注意,StringTokenizer状态的API文档:

StringTokenizer是为了兼容性而保留的遗留类原因,尽管在新代码中不鼓励使用它。建议使用任何寻求此功能的人都使用String的split方法或者使用java.util.regex包。

st.countTokens()方法计算在生成异常之前可以调用此tokenizer's nextToken()方法的次数。当前职位未晋升。

要获得ArrayList中的所有元素,您应该使用以下代码

while(st.hasMoreTokens()) {
    String strEmail =  st.nextToken().toString();
    mListEmailAddresses.add(strEmail);
} 

相关内容

  • 没有找到相关文章

最新更新