- java.lang.Object
-
- java.util.StringTokenizer
-
- All Implemented Interfaces:
-
Enumeration<Object>
public class StringTokenizer extends Object implements Enumeration<Object>
字符串tokenizer类允许应用程序将字符串拆分成令牌。StreamTokenizer
化方法比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
是由于兼容性原因而保留的遗留类,尽管在新代码中不鼓励使用它。 建议任何寻求此功能的人都可以使用split
的String
或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
- 另请参见:
-
StreamTokenizer
-
-
构造方法摘要
构造方法 Constructor 描述 StringTokenizer(String str)
为指定的字符串构造一个字符串tokenizer。StringTokenizer(String str, String delim)
为指定的字符串构造一个字符串tokenizer。StringTokenizer(String str, String delim, boolean returnDelims)
为指定的字符串构造一个字符串tokenizer。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 int
countTokens()
计算这个tokenizer的nextToken
方法在生成异常之前可以调用的次数。boolean
hasMoreElements()
返回与hasMoreTokens
方法相同的值。boolean
hasMoreTokens()
测试此令牌化程序的字符串是否有更多的令牌可用。Object
nextElement()
返回与nextToken
方法相同的值,但其声明的返回值为Object
而不是String
。String
nextToken()
从此字符串标记器返回下一个令牌。String
nextToken(String delim)
返回此字符串tokenizer字符串中的下一个令牌。-
Methods inherited from interface java.util.Enumeration
asIterator
-
-
-
-
构造方法详细信息
-
StringTokenizer
public StringTokenizer(String str, String delim, boolean returnDelims)
为指定的字符串构造一个字符串tokenizer。delim
参数中的所有字符都是用于分隔标记的分隔符。如果
returnDelims
标志为true
,则分隔符字符也作为令牌返回。 每个分隔符作为长度为1的字符串返回。 如果标志是false
,则会跳过分隔符,只能在令牌之间作为分隔符。请注意,如果
delim
为null
,则此构造函数不会引发异常。 然而,试图调用上所产生的其他方法StringTokenizer
可能导致NullPointerException
。- 参数
-
str
- 要解析的字符串。 -
delim
- 分隔符。 -
指示是否将分隔符作为令牌返回的标志
returnDelims
。 - 异常
-
NullPointerException
- 如果str是null
-
StringTokenizer
public StringTokenizer(String str, String delim)
为指定的字符串构造一个字符串tokenizer。delim
参数中的字符是用于分隔标记的分隔符。 分隔符字符本身不会被视为令牌。请注意,如果
delim
为null
,则此构造函数不会引发异常。 然而,试图调用上所产生的其他方法StringTokenizer
可能导致NullPointerException
。- 参数
-
str
- 要解析的字符串。 -
delim
- 分隔符。 - 异常
-
NullPointerException
- 如果str是null
-
StringTokenizer
public StringTokenizer(String str)
为指定的字符串构造一个字符串tokenizer。 标记器使用默认分隔符集,即" \t\n\r\f"
:空格字符,制表符,换行符,回车字符和换页符。 分隔符字符本身不会被视为令牌。- 参数
-
str
- 要解析的字符串。 - 异常
-
NullPointerException
- 如果str是null
-
-
方法详细信息
-
hasMoreTokens
public boolean hasMoreTokens()
测试此令牌化程序的字符串是否有更多的令牌可用。 如果此方法返回true
,则后续调用nextToken
带参数的nextToken
将成功返回令牌。- 结果
-
true
当且仅当在当前位置之后的字符串中至少有一个令牌时;false
否则。
-
nextToken
public String nextToken()
从此字符串标记器返回下一个令牌。- 结果
- 来自此字符串标记器的下一个令牌。
- 异常
-
NoSuchElementException
- 如果这个tokenizer的字符串中没有更多的令牌。
-
nextToken
public String nextToken(String delim)
返回此字符串tokenizer字符串中的下一个令牌。 首先,被这个StringTokenizer
对象认为是分隔符的一组字符被更改为字符串delim
中的字符。 然后返回当前位置后的字符串中的下一个令牌。 当前位置超出了识别的令牌。 新的分隔符集在此调用后保持默认。- 参数
-
delim
- 新的分隔符。 - 结果
- 下一个令牌,切换到新的分隔符集后。
- 异常
-
NoSuchElementException
- 如果这个tokenizer的字符串中没有更多的令牌。 -
NullPointerException
- 如果delim是null
-
hasMoreElements
public boolean hasMoreElements()
返回与hasMoreTokens
方法相同的值。 它存在,以便这个类可以实现Enumeration
接口。- Specified by:
-
hasMoreElements
在接口Enumeration<Object>
- 结果
-
true
如果有更多的令牌;false
否则。 - 另请参见:
-
Enumeration
,hasMoreTokens()
-
nextElement
public Object nextElement()
返回与nextToken
方法相同的值,但其声明的返回值为Object
而不是String
。 它存在,以便这个类可以实现Enumeration
接口。- Specified by:
-
nextElement
在接口Enumeration<Object>
- 结果
- 字符串中的下一个令牌。
- 异常
-
NoSuchElementException
- 如果这个tokenizer的字符串中没有更多的令牌。 - 另请参见:
-
Enumeration
,nextToken()
-
countTokens
public int countTokens()
计算这个tokenizer的nextToken
方法在生成异常之前可以调用的次数。 当前位置不提前。- 结果
- 使用当前分隔符集合在字符串中剩余的令牌数。
- 另请参见:
-
nextToken()
-
-