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()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.