我已经阅读了多个文件并使用StringTokenizer
读取令牌,但我的问题是它看起来像“Geneliad'souza”一样,但我想把它作为“geneliad”和“souza”作为单独的单词。你能解释一下这个逻辑的代码吗?
一个单词以字母(A-Z或a-z)开头,一直持续到遇到非字母(或EOF)。
我的代码中的代码段:
String line = fileReader.nextLine();
String word = null;
StringTokenizer st = new StringTokenizer(line);
while (st.hasMoreTokens()) { // while2 starts
word = st.nextToken().toLowerCase();
...
答案 0 :(得分:1)
StringTokenizer
不应该(谢谢,laune)与多个String
一起用作分隔符,但是您希望它与某些变体一起使用。
另外,正如javadoc所说,“StringTokenizer是一个由于兼容性原因而保留的遗留类”,所以你应该避免在代码中使用它并使用这种方式:
String[] words = line.split("[^a-zA-Z]+");
这里的正则表达式只匹配任何字符(字符序列),但字母除外。
答案 1 :(得分:0)
String line = fileReader.nextLine();
String[] tokens = line.split("[^a-zA-Z]+");
for(String token : tokens) {
System.out.println(token);
}
使用StringTokenizer
非常混乱,并且从不喜欢复杂的拆分,但这可能会让您大致了解如何使用它。
StringTokenizer st = new StringTokenizer(line," !?,.@#$%&_-*^/\"'`\\t\\n\\");