我需要使用分隔符 ". " 拆分文本.例如我想要这个字符串:
Washington is the U.S Capital. Barack is living there.
分成两部分:
Washington is the U.S Capital.
Barack is living there.
这是我的代码:
// Initialize the tokenizer
StringTokenizer tokenizer = new StringTokenizer("Washington is the U.S Capital. Barack is living there.", ". ");
while (tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
不幸的是,输出是:
Washington
is
the
U
S
Capital
Barack
is
living
there
有人可以解释发生了什么吗?
请您参考如下方法:
不要使用 StringTokenizer ;这是一个遗留类。使用 java.util.Scanner 或者干脆 String.split 反而。
String text = "Washington is the U.S Capital. Barack is living there.";
String[] tokens = text.split("\\. ");
for (String token : tokens) {
System.out.println("[" + token + "]");
}
这打印:
[Washington is the U.S Capital]
[Barack is living there.]
请注意
split和
Scanner是基于“正则表达式”的(正则表达式),并且因为
.是一个特殊的正则表达式“元字符”,需要用
\ 进行转义.反过来,由于
\本身是 Java 字符串文字的转义字符,您需要编写
"\\. "作为分隔符。
这听起来可能很复杂,但事实并非如此。
split和
Scanner远优于
StringTokenizer ,并且正则表达式并不难掌握。
正则表达式教程
相关问题
API 链接
java.util.StringTokenizer StringTokenizer是一个遗留类,出于兼容性原因保留,但不鼓励在新代码中使用它。建议任何寻求此功能的人使用 split String的方法或 java.util.regex包代替。 java.util.Scanner String[] String.split 但是出了什么问题?
问题是
StringTokenizer需要
每个字符 在分隔符字符串中作为单独的分隔符,即
不是 整个
String本身。
从 API:
StringTokenizer(String str, String delim): Constructs a string tokenizer for the specified string. The characters in thedelimargument are the delimiters for separating tokens. Delimiter characters themselves will not be treated as tokens.




