Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 关于StringTokenizer的疑惑
mefaint





发贴: 245
积分: 60
于 2003-12-11 10:52 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
近日用StringTokenizer的时候发现了一个以前没有注意的问题,就是分隔符不能使用多个字符?
比如说:

String s = "aa||bb||cc||dd||ee";
String delim = "||";
java.util.StringTokenizer tok = new java.util.StringTokenizer(s, delim);
while (tok.hasMoreTokens()) {
System.out.println(tok.nextToken());
}

结果是对的,但如果原字符串变成"aa||bb||cc||d|d||ee",输出结果就变成了

aa
bb
cc
d
d
ee

难道说StringTokenizer的设计思想就是这样?
不解。。



作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
ditty

负资产小资

CJSDN高级会员


发贴: 1038
积分: 143
于 2003-12-11 11:02 user profilesend a private message to usersend email to dittysearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我的j2sdk 1.42_02没有问题,怀疑是JDK版本的问题。


内忧外患的时代,洗心革面,阿咪豆腐~
作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
Ispy



发贴: 0
积分: 0
于 2003-12-11 11:30 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
delim好象只认一个字符
我的也是j2sdk 1.42_02啊!


import java.util.*;
public class Test {
  public static void main(String[] args){
  String s = "aa>bb>cc>d>d>>ee";
  String delim = ">>";
  StringTokenizer tok = new StringTokenizer(s,">>",true);
  while (tok.hasMoreTokens()) {
      System.out.println(tok.nextToken());
  }
  StringTokenizer st = new StringTokenizer("this is a test");
       while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());

    }
  }
}




作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
Ispy



发贴: 0
积分: 0
于 2003-12-11 11:31 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
结果

aa
>
bb
>
cc
>
d
>
d
>
>
ee
this
is
a
test




作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
mefaint





发贴: 245
积分: 60
于 2003-12-11 11:34 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
问题已解决
参见
http://www.cjsdn.com/post/view?bid=1&id=70171&sty=1&tpg=1&age=0
linux_china的解释



作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
floater

Java Jedi

总版主


发贴: 3233
积分: 421
于 2003-12-11 11:35 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
please don't post more than once.


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code
作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
mefaint





发贴: 245
积分: 60
于 2003-12-11 11:38 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
斑竹不要生气,刚才发帖的时候网络比较慢,我又比较心急。。。
一时多点了几下。。。
我已经让“烂泥”帮我删了。



作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
floater

Java Jedi

总版主


发贴: 3233
积分: 421
于 2003-12-11 11:57 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
It's ok, just a kindly reminder, since it happens several times recently.


"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code
作者 Re:关于StringTokenizer的疑惑 [Re:mefaint]
jsmile

Life is good



发贴: 127
积分: 52
于 2003-12-11 12:19 user profilesend a private message to usersend email to jsmilesearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
From The Java Language Specification:

21.10.2 public StringTokenizer(String str, String delim)

This constructor initializes a newly created StringTokenizer so that it will recognize tokens within the given string str. All characters in the string delim will be considered delimiters. Delimiter characters themselves will not be treated as tokens.

http://java.sun.com/docs/books/jls/first_edition/html/javautil.doc10.html#7648

So if String s = "aa||bb||cc||d|d||ee";
String delim = "abcde";
StringTokenizer tok = new StringTokenizer(s, delim);
Only "||" and "|" returned.
if tok = new StringTokenizer(s, delim, true);
Everything is returned because delimiter characters themselves are treated as tokens.




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923