string tokenizer 类允许应用程序将字符串分解为标记。tokenization 方法比 StreamTokenizer
类所使用的方法更简单。StringTokenizer
方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释。 可以在创建时指定,也可以根据每个标记来指定分隔符(分隔标记的字符)集。
StringTokenizer
的实例有两种行为方式,这取决于它在创建时使用的 returnDelims
标志的值是 true
还是 false
:
- 如果标志为
false
,则分隔符字符用来分隔标记。标记是连续字符(不是分隔符)的最大序列。 - 如果标志为
true
,则认为那些分隔符字符本身即为标记。因此标记要么是一个分隔符字符,要么是那些连续字符(不是分隔符)的最大序列。
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 自己编写多分隔符的字符串分割:/** * 分隔字符串 * @param srcStr 被分隔的字符串 * @param splitChars 多个分隔符 * @return 分隔结果 */ public static List<String> splitString(String srcStr,String splitChars) { if(isBlank(srcStr)) { return null; } List<String> strList=new ArrayList<String>(); StringTokenizer tok=new StringTokenizer(srcStr,splitChars); while(tok.hasMoreTokens()){ strList.add(tok.nextToken()); } return strList; }