public class StringTokenizer extends Object implements Enumeration<Object>
StreamTokenizer
类使用的方法简单得多。
StringTokenizer
方法不区分标识符,数字和引用的字符串,也不识别和跳过注释。
可以在创建时或每个令牌的基础上指定一组分隔符(分隔标记的字符)。
StringTokenizer
一个实例以两种方式之一表现,具体取决于是否使用值为true
或false
的returnDelims
标志创建:
false
,则分隔符用于分隔标记。 令牌是不是分隔符的连续字符的最大序列。 true
,则分隔符字符本身被认为是令牌。 因此,令牌是一个定界符字符,或不是分隔符的连续字符的最大序列。 A StringTokenizer对象内部维护要标记化的字符串中的当前位置。 某些操作会将当前位置提升到经处理的字符之后。
通过使用用于创建StringTokenizer对象的字符串的子字符串来返回令牌。
以下是使用tokenizer的一个示例。 代码:
StringTokenizer st = new StringTokenizer("this is a test"); while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }
打印以下输出:
this is a test
StringTokenizer是由于兼容性原因而保留的遗留类,尽管在新代码中不鼓励使用它。 建议任何寻求此功能的人都使用String的split或java.util.regex包替代。
以下示例说明了如何使用String.split方法将字符串分解为其基本令牌:
String[] result = "this is a test".split("\\s"); for (int x=0; x<result.length; x++) System.out.println(result[x]);
打印以下输出:
this is a test
StreamTokenizer
Constructor and Description |
---|
StringTokenizer(String str)
为指定的字符串构造一个字符串tokenizer。
|
StringTokenizer(String str, String delim)
为指定的字符串构造一个字符串tokenizer。
|
StringTokenizer(String str, String delim, boolean returnDelims)
为指定的字符串构造一个字符串tokenizer。
|
Modifier and Type | Method and Description |
---|---|
int |
countTokens()
计算这个tokenizer的
nextToken 方法在生成异常之前可以调用的次数。
|
boolean |
hasMoreElements()
返回与
hasMoreTokens 方法相同的值。
|
boolean |
hasMoreTokens()
测试此令牌化程序的字符串是否有更多的令牌可用。
|
Object |
nextElement()
返回与
nextToken 方法相同的值,但其声明的返回值为
Object 而不是
String 。
|
String |
nextToken()
从此字符串标记器返回下一个令牌。
|
String |
nextToken(String delim)
返回此字符串tokenizer字符串中的下一个令牌。
|
public StringTokenizer(String str, String delim, boolean returnDelims)
delim
参数中的所有字符都是用于分隔标记的分隔符。
如果returnDelims
标志为true
,则分隔符字符也作为标记返回。 每个分隔符作为长度为1的字符串返回。 如果标志为false
,则跳转分隔符,并仅在令牌之间作为分隔符。
请注意,如果delim为null ,则此构造函数不会抛出异常。 然而,试图调用其他方法对结果StringTokenizer可能会导致一个NullPointerException 。
str
- 要解析的字符串。
delim
- 分隔符。
returnDelims
- 表示是否将分隔符返回为标记的标志。
NullPointerException
- 如果str是
null
public StringTokenizer(String str, String delim)
delim
参数中的字符是用于分隔标记的分隔符。
分隔符字符本身不会被视为令牌。
请注意,如果delim为null ,则此构造函数不会抛出异常。 然而,试图调用上产生StringTokenizer其他方法可能导致NullPointerException。
str
- 要解析的字符串。
delim
- 分隔符。
NullPointerException
- 如果str是
null
public StringTokenizer(String str)
" \t\n\r\f"
:空格字符,制表符,换行字符,回车字符和换页符。
分隔符字符本身不会被视为令牌。
str
- 要解析的字符串。
NullPointerException
- 如果str是
null
public boolean hasMoreTokens()
true
当且仅当在当前位置之后的字符串中至少有一个令牌时;
false
否则。
public String nextToken()
NoSuchElementException
- 如果这个tokenizer的字符串中没有更多的令牌。
public String nextToken(String delim)
delim
- 新的分隔符。
NoSuchElementException
- 如果这个tokenizer的字符串中没有更多的令牌。
NullPointerException
- 如果delim是
null
public boolean hasMoreElements()
hasMoreTokens
方法相同的值。
它存在于这个类可以实现Enumeration
接口。
hasMoreElements
中的
Enumeration<Object>
true
如果有更多的令牌;
false
否则。
Enumeration
, hasMoreTokens()
public Object nextElement()
nextToken
方法相同的值,但其声明的返回值为Object
而不是String
。
它存在,以便这个类可以实现Enumeration
接口。
nextElement
在界面
Enumeration<Object>
NoSuchElementException
- 如果这个tokenizer的字符串中没有更多的令牌。
Enumeration
, nextToken()
public int countTokens()
nextToken
方法在生成异常之前可以调用的次数。
当前位置不提前。
nextToken()