读取多个文件然后分离字符串

时间:2014-07-06 17:37:30

标签: java

我已经阅读了多个文件并使用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();
    ...

2 个答案:

答案 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\\");