StringTokenizer类的使用

2019-03-14 22:09|来源: 网络

StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。
1.构造函数
public StringTokenizer(String str)
public StringTokenizer(String str, String delim)
public StringTokenizer(String str, String delim, boolean returnDelims)
第一个参数就是要分隔的String,第二个是分隔字符集合,第三个参数表示分隔符号是否作为标记返回,如果不指定分隔字符,默认的是:”\t\n\r\f”
2.核心方法
public boolean hasMoreTokens()
public String nextToken()
public String nextToken(String delim)
public int countTokens()
其实就是三个方法,返回分隔字符块的时候也可以指定分割符,而且以后都是采用最后一次指定的分隔符号。
3.多余方法
public boolean hasMoreElements()
public boolean hasMoreElements()
这个类实现了Enumeration接口,所以多了这么两个方法,其实根本没有必要实现这个接口
它的名字就叫StringTokenizer,返回一个Object就没有什么意思了。

属于:java.util包。

1、构造函数。

1. StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。
2. StringTokenizer(String str, String delim):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。
3. StringTokenizer(String str, String delim, boolean returnDelims):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。


2、方法。
说明:
1. 所有方法均为public;
2. 书写格式:[修饰符] <返回类型><方法名([参数列表])>
如:
static int parseInt(String s)表示:此方法(parseInt)为类方法(static),返回类型为(int),方法所需参数为String类型。

1. int countTokens():返回nextToken方法被调用的次数。如果采用构造函数1和2,返回的就是分隔符数量(例2)。
2. boolean hasMoreTokens() :返回是否还有分隔符。
3. boolean hasMoreElements() :结果同2。
4. String nextToken():返回从当前位置到下一个分隔符的字符串。
5. Object nextElement() :结果同4。
6. String nextToken(String delim):与4类似,以指定的分隔符返回结果。


例子:
代码:
String s = new String("The Java platform is the ideal platform for network computing");
StringTokenizer st = new StringTokenizer(s);
System.out.println( "Token Total: " + st.countTokens() );
while( st.hasMoreElements() ){
System.out.println( st.nextToken() );
           }
结果为:
Token Total: 10
The
Java
platform
is
the
ideal
platform
for
network
computing

例2:
代码:
String s = new String("The=Java=platform=is=the=ideal=platform=for=network=computing");
StringTokenizer st = new StringTokenizer(s,"=",true);
System.out.println( "Token Total: " + st.countTokens() );
while( st.hasMoreElements() ){
System.out.println( st.nextToken() );
}
结果为:
Token Total: 19
The
=
Java
=
platform
=
is
=
the
=
ideal
=
platform
=
for
=
network
=
computing

 

 

原文出自:http://blog.sina.com.cn/s/blog_8830b3ed0100y9m7.html


转自:http://blog.csdn.net/riyunzhu/article/details/7989145

相关问答

更多
  • 如果你的数据已经存在于数据库中,你需要解析字符串,我会建议反复使用indexOf。 它比任一解决方案快许多倍。 但是,从数据库获取数据仍然可能要昂贵得多。 StringBuilder sb = new StringBuilder(); for (int i = 100000; i < 100000 + 60; i++) sb.append(i).append(' '); String sample = sb.toString(); int runs = 100000; for (int i = 0 ...
  • 从javadoc for StringTokenizer : StringTokenizer是一个遗留类,由于兼容性原因而被保留,尽管在新代码中不鼓励使用它。 建议任何寻求此功能的人都使用String或java.util.regex包的拆分方法。 如果您查看String.split()并将其与StringTokenizer进行比较,则相关的区别是String.split()使用正则表达式,而StringTokenizer仅使用逐字裁剪字符。 因此,如果我想要使用比单个字符更复杂的逻辑字符串进行标记(例如,在 ...
  • 他们基本上是马课程。 Scanner适用于需要解析字符串的情况,并提取不同类型的数据。 它是非常灵活的,但可以说是不能给你最简单的API,只需得到一个由特定表达式分隔的字符串数组。 String.split()和Pattern.split()给你一个简单的语法来做后者,但这基本上是他们所做的一切。 如果要解析生成的字符串,或者根据特定的令牌更改分隔符,则不会帮助您。 StringTokenizer比String.split()更加限制,也有一点使用。 它基本上设计用于拉出由固定子串限定的令牌。 由于这个限制 ...
  • 据说在DocumentPreprocessor文档中 注意:如果使用null参数,则假定文档被标记化,DocumentPreprocessor不执行标记化。 由于您从文件加载的文档已经在程序的第一步中被标记化,因此您应该: DocumentPreprocessor dp = new DocumentPreprocessor("./data/stanford-nlp/A.txt"); dp.setTokenizerFactory(null); 然后它正确地输出'单词,例如 ... did_VBD VBD d ...
  • 你可以做这样的事情: String firstPart = line.substring(0, line.indexOf(" ")); String secondPart = line.substring(line.indexOf(" ")+1); 检查文档: http : //docs.oracle.com/javase/7/docs/api/java/lang/String.html You can do something like this: String firstPart = line.sub ...
  • 任何人都可以建议如何在创建JSON [...]时在Java中正确地转义地名字符串中的逗号? 您的问题是您将多个值作为单个字符串返回 - 您在括号内部使用双引号,而不是在内部(包含单个值)。 你可能想要一个JSON的字符串列表,而不是自己砍掉东西: {"success": ["TG2301_Stoke Holy Cross", "TF7439_Thornham Corner", "TL8583_Thetford, North"]} 这样,引号中的逗号在 ...
  • 这是因为Scanner可能匹配一个空String ,而StringTokonizer则不会。 在这种情况下,部分“部分!但是” Scanner匹配后面的空格! 符号,而StringTokenizer则没有。 It is because Scanner may match an empty String, while StringTokonizer will not. In this case in the part "section! But" Scanner matches the whitespace ...
  • 你在String类中尝试过split方法吗? 在您的示例中,当您执行sc.next()时,它会为您提供以空格分隔的文本。 所以当你输入“嗨,你好吗”时,sc.next()只返回“hi,how”它不是StringTokenizer的问题,使用sc.nextLine()而不是sc.next()。 这应该会给你你正在预测的结果。 Have you tried split method in the String class ? In your sample, when you do sc.next(), it g ...
  • 你的while循环正在测试StringTokenizer是否还有一个令牌。 但是那时你正在阅读四个以上的代币。 当令牌的数量不能被4整除时,这将会崩溃。 你可以安全地做的是: StringTokenizer tokens = new StringTokenizer(auxiliar, ";"); while(tokens.hasMoreTokens()){ token = tokens.nextToken(); System.out.println(token); } Your whil ...
  • 您正在以错误的方式使用StringTokenizer 。 您的标记器不会按照您所期望的那样在"&&&&&&&"分割,但在'&' ,因为它只需要您的分隔符中的一个字符字符串来分隔标记。 然后它丢弃空的标记,这就是为什么你得到了预期的结果。 例如: StringTokenizer tokens = new StringTokenizer("a&&b&&c", "&&&"); while (tokens.hasMoreTokens()) { System.out.println(t ...