java.lang.Object
java.util.StringTokenizer
- 所有已实现的接口:
-
Enumeration<Object>
字符串标记类允许应用程序将字符串分解为标记。标记化方法比
StreamTokenizer
类使用的方法简单得多。 StringTokenizer
方法不区分标识符、数字和带引号的字符串,也不识别和跳过注释。
分隔符集(分隔标记的字符)可以在创建时或每个标记的基础上指定。
StringTokenizer
的实例行为有两种方式,取决于是否使用值为true
或false
的returnDelims
标志创建:
- 如果标志为
false
,分隔符字符用于分隔标记。标记是一系列不是分隔符的连续字符。 - 如果标志为
true
,分隔符字符本身被视为标记。因此,标记要么是一个分隔符字符,要么是一系列不是分隔符的连续字符。
StringTokenizer
对象在要标记的字符串内部维护当前位置。一些操作会将此当前位置推进到处理的字符之后。
通过从用于创建StringTokenizer
对象的字符串中获取子字符串来返回标记。
以下是标记器的使用示例。 代码:
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
- 自版本:
- 1.0
- 参见:
-
Constructor Summary
ConstructorDescriptionStringTokenizer
(String str) 为指定的字符串构造一个字符串标记器。StringTokenizer
(String str, String delim) 为指定的字符串构造一个字符串标记器。StringTokenizer
(String str, String delim, boolean returnDelims) 为指定的字符串构造一个字符串标记器。 -
Method Summary
Modifier and TypeMethodDescriptionint
计算在生成异常之前可以调用此标记器的nextToken
方法的次数。boolean
返回与hasMoreTokens
方法相同的值。boolean
测试此标记器的字符串中是否有更多标记可用。返回与nextToken
方法相同的值,只是其声明的返回值为Object
而不是String
。返回此字符串标记器的下一个标记。返回此字符串标记器的字符串中的下一个标记。Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface java.util.Enumeration
asIterator
-
Constructor Details
-
StringTokenizer
为指定的字符串构造一个字符串标记器。delim
参数中的所有字符都是用于分隔标记的分隔符。如果
returnDelims
标志为true
,则分隔符字符也作为标记返回。每个分隔符都作为由分隔符的一个或两个char
组成的字符串返回。如果标志为false
,则跳过分隔符字符,分隔符字符仅用作标记之间的分隔符。请注意,如果
delim
为null
,此构造函数不会引发异常。但是,尝试在生成的StringTokenizer
上调用其他方法可能会导致NullPointerException
。- 参数:
-
str
- 要解析的字符串。 -
delim
- 分隔符。 -
returnDelims
- 指示是否将分隔符作为标记返回的标志。 - 抛出:
-
NullPointerException
- 如果str为null
-
StringTokenizer
为指定的字符串构造一个字符串标记器。delim
参数中的字符是用于分隔标记的分隔符。 分隔符字符本身不会被视为标记。请注意,如果
delim
为null
,此构造函数不会引发异常。但是,尝试在生成的StringTokenizer
上调用其他方法可能会导致NullPointerException
。- 参数:
-
str
- 要解析的字符串。 -
delim
- 分隔符。 - 抛出:
-
NullPointerException
- 如果str为null
-
StringTokenizer
为指定的字符串构造一个字符串标记器。 标记器使用默认的分隔符集,即" \t\n\r\f"
:空格字符、制表符、换行符、回车符和换页符。 分隔符字符本身不会被视为标记。- 参数:
-
str
- 要解析的字符串。 - 抛出:
-
NullPointerException
- 如果str为null
-
-
Method Details
-
hasMoreTokens
public boolean hasMoreTokens()测试此标记器的字符串中是否有更多标记可用。 如果此方法返回true
,则随后调用不带参数的nextToken
将成功返回一个标记。- 返回:
-
如果在当前位置之后的字符串中至少有一个标记,则返回
true
;否则返回false
。
-
nextToken
返回此字符串标记器的下一个标记。- 返回:
- 此字符串标记器的下一个标记。
- 抛出:
-
NoSuchElementException
- 如果此标记器的字符串中没有更多标记。
-
nextToken
返回此字符串标记器的字符串中的下一个标记。 首先,此StringTokenizer
对象认为是分隔符的字符集更改为字符串delim
中的字符。 然后返回当前位置之后的字符串中的下一个标记。 当前位置被推进到识别的标记之后。 此调用后,新的分隔符集仍然是默认的。- 参数:
-
delim
- 新的分隔符。 - 返回:
- 切换到新的分隔符集后的下一个标记。
- 抛出:
-
NoSuchElementException
- 如果此标记器的字符串中没有更多标记。 -
NullPointerException
- 如果delim为null
-
hasMoreElements
public boolean hasMoreElements()返回与hasMoreTokens
方法相同的值。 它存在是为了使此类能够实现Enumeration
接口。- 指定者:
-
hasMoreElements
在接口Enumeration<Object>
- 返回:
-
如果有更多标记,则返回
true
;否则返回false
。 - 参见:
-
nextElement
返回与nextToken
方法相同的值,只是其声明的返回值为Object
而不是String
。 它存在是为了使此类能够实现Enumeration
接口。- 指定者:
-
nextElement
在接口Enumeration<Object>
- 返回:
- 字符串中的下一个标记。
- 抛出:
-
NoSuchElementException
- 如果此标记器的字符串中没有更多标记。 - 参见:
-
countTokens
public int countTokens()计算在生成异常之前可以调用此标记器的nextToken
方法的次数。 当前位置不会被推进。- 返回:
- 使用当前分隔符集中剩余的标记数。
- 参见:
-