关于StringTokenizer的一个小问题

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

9 个解决方案

#1


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

#2


我只会用 string 的 .split 方法。。。

#3


"后面那个" @"表示的是分隔符,就是以空格和@将字符串分隔成一个个的Token”

你说的意思是这样的StringTokenizer fenxi = new StringTokenizer("aooo @sina.com"," @");
这样得到的是2,这个肯定没有问题,就是正常理解

可是StringTokenizer fenxi = new StringTokenizer("ao oo@sina.com"," @");这种情况就是3了
而  StringTokenizer fenxi = new StringTokenizer("ao oo@sina.com","@");这种情况是2
我是想知道这个是怎么回事

#4


引用 3 楼 caibaozixixi 的回复:
"后面那个" @"表示的是分隔符,就是以空格和@将字符串分隔成一个个的Token”

你说的意思是这样的StringTokenizer fenxi = new StringTokenizer("aooo @sina.com"," @");
这样得到的是2,这个肯定没有问题,就是正常理解

可是StringTokenizer fenxi = new StringTokenizer("ao ……

引号里面每个字符都是分隔符,不是说他俩在一起才是分隔符。

#5


想知道StringTokenizer的这个对于CountTokens的返回值是可以理解被分隔符分了多少份的吧?
是的

还有就是对于加不加空格的这个问题。 
给定的分隔符字符串中(第二个参数),每一个字符都是一个分隔符,而不是整个字符串是一个分隔符。所以加空格后,就表示当前有两个分隔符,空格和@。

#6


StringTokenizer fenxi = new StringTokenizer("a ooo@sina.com"," @");
这种情况下的分隔符就是" "和"@",解析的结果为:a、ooo、sina.com
 而  StringTokenizer fenxi = new StringTokenizer("a ooo@sina.com","@");
这种情况下的分隔符就只有"@",解析的结果为:a ooo和sina.com

StringTokenizer的构造函数有以下三种:
 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 ooo@sina.com", " @",true);
int n = fenxi.countTokens();
System.out.println(n);
 while (fenxi.hasMoreTokens()) {
         System.out.println(fenxi.nextToken());
     }

}
}
结果为:
5
a
 
ooo
@
sina.com

#7


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

#8


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

那对不起啦。。。。。。。。
是我高估了自己的语言组织水平和你的理解能力。。 关于StringTokenizer的一个小问题

#9


引用 8 楼 abc41106 的回复:
引用 7 楼 caibaozixixi 的回复:非常感谢各位,现在明白了。。。abc41106回复了两次。。 Njdezhang说的就比较明了了,一句话到位。。
linjiafu更不说了。。
那对不起啦。。。。。。。。
是我高估了自己的语言组织水平和你的理解能力。。



哈哈,还是很感谢的啊。可能我也没表达好,我的意思是让你费事说了两次。。。

#1


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

#2


我只会用 string 的 .split 方法。。。

#3


"后面那个" @"表示的是分隔符,就是以空格和@将字符串分隔成一个个的Token”

你说的意思是这样的StringTokenizer fenxi = new StringTokenizer("aooo @sina.com"," @");
这样得到的是2,这个肯定没有问题,就是正常理解

可是StringTokenizer fenxi = new StringTokenizer("ao oo@sina.com"," @");这种情况就是3了
而  StringTokenizer fenxi = new StringTokenizer("ao oo@sina.com","@");这种情况是2
我是想知道这个是怎么回事

#4


引用 3 楼 caibaozixixi 的回复:
"后面那个" @"表示的是分隔符,就是以空格和@将字符串分隔成一个个的Token”

你说的意思是这样的StringTokenizer fenxi = new StringTokenizer("aooo @sina.com"," @");
这样得到的是2,这个肯定没有问题,就是正常理解

可是StringTokenizer fenxi = new StringTokenizer("ao ……

引号里面每个字符都是分隔符,不是说他俩在一起才是分隔符。

#5


想知道StringTokenizer的这个对于CountTokens的返回值是可以理解被分隔符分了多少份的吧?
是的

还有就是对于加不加空格的这个问题。 
给定的分隔符字符串中(第二个参数),每一个字符都是一个分隔符,而不是整个字符串是一个分隔符。所以加空格后,就表示当前有两个分隔符,空格和@。

#6


StringTokenizer fenxi = new StringTokenizer("a ooo@sina.com"," @");
这种情况下的分隔符就是" "和"@",解析的结果为:a、ooo、sina.com
 而  StringTokenizer fenxi = new StringTokenizer("a ooo@sina.com","@");
这种情况下的分隔符就只有"@",解析的结果为:a ooo和sina.com

StringTokenizer的构造函数有以下三种:
 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 ooo@sina.com", " @",true);
int n = fenxi.countTokens();
System.out.println(n);
 while (fenxi.hasMoreTokens()) {
         System.out.println(fenxi.nextToken());
     }

}
}
结果为:
5
a
 
ooo
@
sina.com

#7


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

#8


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

那对不起啦。。。。。。。。
是我高估了自己的语言组织水平和你的理解能力。。 关于StringTokenizer的一个小问题

#9


引用 8 楼 abc41106 的回复:
引用 7 楼 caibaozixixi 的回复:非常感谢各位,现在明白了。。。abc41106回复了两次。。 Njdezhang说的就比较明了了,一句话到位。。
linjiafu更不说了。。
那对不起啦。。。。。。。。
是我高估了自己的语言组织水平和你的理解能力。。



哈哈,还是很感谢的啊。可能我也没表达好,我的意思是让你费事说了两次。。。