import java.util.StringTokenizer;
public class StrTokenizerTest {
public static void main(String[] args) {
StringTokenizer fenxi = new StringTokenizer("a [email protected]","@");
int n = fenxi.countTokens();
System.out.println(n);
}
}
对于这种情况"@"不加空格得到的是2
如果加上空格StringTokenizer fenxi = new StringTokenizer("a [email protected]"," @");
得到的结果就是3
想知道StringTokenizer的这个对于CountTokens的返回值是可以理解被分隔符分了多少份的吧?
还有就是对于加不加空格的这个问题。

解决方案 »

  1.   

    StringTokenizer fenxi = new StringTokenizer("a [email protected]"," @");
    后面那个" @"表示的是分隔符,就是以空格和@将字符串分隔成一个个的Token
    如果你不加空格,就是只以@作为分隔符。
    当然你也可以写其他的,比如 ",. @"
      

  2.   

    我只会用 string 的 .split 方法
      

  3.   

    "后面那个" @"表示的是分隔符,就是以空格和@将字符串分隔成一个个的Token”你说的意思是这样的StringTokenizer fenxi = new StringTokenizer("aooo @sina.com"," @");
    这样得到的是2,这个肯定没有问题,就是正常理解可是StringTokenizer fenxi = new StringTokenizer("ao [email protected]"," @");这种情况就是3了
    而  StringTokenizer fenxi = new StringTokenizer("ao [email protected]","@");这种情况是2
    我是想知道这个是怎么回事
      

  4.   

    想知道StringTokenizer的这个对于CountTokens的返回值是可以理解被分隔符分了多少份的吧?
    是的还有就是对于加不加空格的这个问题。 
    给定的分隔符字符串中(第二个参数),每一个字符都是一个分隔符,而不是整个字符串是一个分隔符。所以加空格后,就表示当前有两个分隔符,空格和@。
      

  5.   

    StringTokenizer fenxi = new StringTokenizer("a [email protected]"," @");
    这种情况下的分隔符就是" "和"@",解析的结果为:a、ooo、sina.com
     而  StringTokenizer fenxi = new StringTokenizer("a [email protected]","@");
    这种情况下的分隔符就只有"@",解析的结果为:a ooo和sina.comStringTokenizer的构造函数有以下三种:
     public StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”
     public StringTokenizer(String str, String delim):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。
     public StringTokenizer(String str, String delim, boolean returnDelims):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。
     
     第一个参数就是要分隔的String,第二个是分隔字符集合,第三个参数表示分隔符号是否作为标记返回,如果不指定分隔字符,默认的是:”\t\n\r\f”;
    fenxi.countTokens();返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量,采用有三个参数的构造函数就要加上分隔符本身如:
    package com.shine.test;import java.util.StringTokenizer;public class StrTokenizerTest {
    public static void main(String[] args) {
    StringTokenizer fenxi = new StringTokenizer("a [email protected]", " @",true);
    int n = fenxi.countTokens();
    System.out.println(n);
     while (fenxi.hasMoreTokens()) {
             System.out.println(fenxi.nextToken());
         } }
    }
    结果为:
    5
    a
     
    ooo
    @
    sina.com
      

  6.   

    非常感谢各位,现在明白了abc41106回复了两次。。 Njdezhang说的就比较明了了,一句话到位。。
    linjiafu更不说了。。