写了一个测试程序
import java.util.*;public class TestString
{
public static void main(String[] args)
{
String a = "dbse*23df*s";
StringTokenizer nizer=new StringTokenizer(a,"*2",false);
while (nizer.hasMoreTokens())
{
String str=nizer.nextToken();
System.out.println(str);
}
}
}
发现输出结果为
dbse
3df
s
好象你的猜想是正确的,只匹配了第一个字符!
import java.util.*;public class TestString
{
public static void main(String[] args)
{
String a = "dbse*23df*s";
StringTokenizer nizer=new StringTokenizer(a,"*2",false);
while (nizer.hasMoreTokens())
{
String str=nizer.nextToken();
System.out.println(str);
}
}
}
发现输出结果为
dbse
3df
s
好象你的猜想是正确的,只匹配了第一个字符!
解决方案 »
- java编的程序在通知区域显示图标,不在任务栏上显示,就跟qq最小化后一样
- java中一个小Applet程序的疑问
- 用代码找罪犯(算法题)
- 至今没找到高手解答的调试问题
- jsp页面传值出现错误,不知如何解决.(急)
- java问题:如何用一个循环或者方法实现随机分配?
- String s="123456789";String[] ss = s.split("");为什么ss.length是10不是9呢
- 求助:Exception in thread "main" java.lang.NullPointerException at myjava.main(myjava:12)
- 求解小程序...
- ant的安装
- 求注册号
- 编译通过但运行没结果
import java.util.*;public class TestString {
public static void main(String[] args) {
String a = "dbse*23df*s***32*2*2*";
StringTokenizer nizer = new StringTokenizer(a, "*2", false);
while (nizer.hasMoreTokens()) {
String str = nizer.nextToken();
System.out.println(str);
}
}
}
结果
dbse
3df
s
3s2和2s真的是被标识为相同的Token
终于了解只要出现在
delim参数(就是作为分隔符的参数,上例中"*2")里的所有字符都作为delim
可以试在nizer中添加3,d就明白了
str - a string to be parsed.
delim - the delimiters.这里面清楚地说明了delim的处理方式:按character字符的形式对待。据我所知,StringTokenizer类的标准API好像没有对楼主这个想法有太好的支持,解决方案有两个:1、在StringTokenizer基础上自己构建一个新的方法来处理;
2、使用正则表达式。
String str = "abcdcdcd";如果我么希望分隔符是作为整体的字符串"cdc"或者"dcd",那么我们该怎样确定和划分token就不明确了。ab
cdc
cdc
d还是abc
dcd
dcd都会有字符重叠现象。对于楼主的实际问题,稍微改一改,加一个判断应该就好了,但那一定不是一变应万变的良策。
stringtokenizer本来就是sun不推荐继续使用的
它的存在价值只不过是兼容老代码而已