java令牌_Java 令牌

Java IO教程 - Java令牌

Java有一些实用程序类,让我们将一个字符串分解成称为令牌的部分。

我们通过定义分隔符字符来定义被认为是令牌的字符序列。

StringTokenizer类位于java.util包中。 StreamTokenizer类位于java.io包中。

StringTokenizer将字符串拆分成令牌,而StreamTokenizer让我们在基于字符的流中访问令​​牌。

StringTokenizer

StringTokenizer对象根据您对定界符的定义将字符串拆分为标记。它一次返回一个令牌。

我们还可以随时更改分隔符。我们可以通过指定字符串并接受默认分隔符来创建一个StringTokenizer,它是空格,制表符,换行符,回车符和换行符(“\t \n \r \f”)如下:StringTokenizer st = new StringTokenizer("here is my string");

我们可以在创建StringTokenizer时指定自己的分隔符,如下所示:下面的代码使用空格,逗号和分号作为分隔符。String delimiters = " ,;";

StringTokenizer st = new StringTokenizer("my text...", delimiters);

我们可以使用hasMoreTokens()方法来检查是否有更多的令牌和nextToken()方法从字符串中获取下一个令牌。

我们还可以使用String类的split()方法将字符串拆分为基于分隔符的令牌。

split()方法接受正则表达式作为分隔符。

以下代码显示如何使用StringTokenizer和String类的split()方法。import java.util.StringTokenizer;

public class Main {

public static void main(String[] args) {

String str = "This is a test, this is another test.";

String delimiters = " ,"; // a space and a comma StringTokenizer st = new StringTokenizer(str, delimiters);

System.out.println("Tokens using a StringTokenizer:");

String token = null;

while (st.hasMoreTokens()) {

token = st.nextToken();

System.out.println(token);

}

}

}

上面的代码生成以下结果。

6aa3db292f1b2232850bc09242a0c8fe.png

StreamTokenizer

要根据标记的类型区分标记,请使用StreamTokenizer类。import static java.io.StreamTokenizer.TT_EOF;

import static java.io.StreamTokenizer.TT_NUMBER;

import static java.io.StreamTokenizer.TT_WORD;

import java.io.IOException;

import java.io.StreamTokenizer;

import java.io.StringReader;

public class Main {

public static void main(String[] args) throws Exception {

String str = "This is a test, 200.89 which is simple 50";

StringReader sr = new StringReader(str);

StreamTokenizer st = new StreamTokenizer(sr);

try {

while (st.nextToken() != TT_EOF) {

switch (st.ttype) {

case TT_WORD: /* a word has been read */

System.out.println("String value: " + st.sval);

break;

case TT_NUMBER: /* a number has been read */

System.out.println("Number value: " + st.nval);

break;

}

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

该程序使用StringReader对象作为数据源。我们可以使用FileReader对象或任何其他Reader对象作为数据源。

重复调用StreamTokenizer的nextToken()方法。它填充StreamTokenizer对象的三个字段:ttype,sval和nval。ttype字段指示已读取的令牌类型。

以下是类型字段的四个可能的值:领域意义

TT_EOF已达到流的结尾。

TT_EOL已达到行尾。

TT_WORD字(字符串)已从流中读取为令牌。

TT_NUMBER数字已从流中读取为令牌。

如果ttype具有TT_WORD,则字符串值存储在其字段sval中。

如果返回TT_NUBMER,其数值存储在nval字段中。

上面的代码生成以下结果。

a643a0da6073cdafe24105834ed471d0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值