一般的网络程序中大量使用了StringTokenizer来分割后台传过来的字符串。但是这个class是有问题的,起码他不是按照我的想法来工作的,主要问题就是当我们定义的delimiter含有多个字符的时候,StringTokenizer认为这些字符都是delimiter,而不是这个字符串这个整体是一个delimiter
比如这样的代码:
比如这样的代码:
StringTokenizer st
=
new
StringTokenizer(
"
mno;de9&1234;&*end
"
,
"
;&*
"
);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
这样的代码会发现打印出来的东西是:
mno
de9
1234
end
mno
de9
1234
end
这显然是不行的,所以,我们遵照JDK中的建议,使用String类本身的split方法来代替,split中可以填写一个RE,功能要强大很多,不过对EasyCluster代码的修改也是比较痛苦的。使用split的时候,由于delimiter是一个RE,所以,要注意上述使用 ;&* 作为delimiter的时候,*要解引用,因为*是RE中的关键符号。如:
String input
=
"
mno;de9&1234;&*end
"
;
String re = " ;&\\* " ;
String[] token_array = input.split(re);
for ( int i = 0 ; i < token_array.length; i ++ ) {
System.out.println(token_array[i]);
}
String re = " ;&\\* " ;
String[] token_array = input.split(re);
for ( int i = 0 ; i < token_array.length; i ++ ) {
System.out.println(token_array[i]);
}