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

Java 读取多个文件,然后分离字符串,java,Java,我已经使用StringTokenizer读取了多个文件和标记,但我的问题是它读取的“Geneliad'souza”是相同的,但我希望它作为“Geneliad”和“souza”作为单独的单词。你能解释一下这个逻辑的代码吗 单词以字母(A-Z或A-Z)开头,一直持续到遇到非字母(或EOF)为止 我的代码片段: String line = fileReader.nextLine(); String word = null; StringTokenizer st = new StringTokeniz

我已经使用
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();
    ...

StringTokenizer
不应该(谢谢,)与多个
String
作为分隔符一起使用,但您希望它与某些变体一起使用。 另外,正如前面所说,“StringTokenizer是一个遗留类,出于兼容性原因而保留”,因此您应该避免在代码中使用它,并以这种方式使用:

String[] words = line.split("[^a-zA-Z]+");
在这里,正则表达式将只匹配任何字符(字符序列),字母除外

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

我试着在JAVA中使用正则表达式,但是这个不行work@TheLostMind:no单词的唯一条件是以字母(a-Z或a-Z)开头,并持续到遇到非字母(或EOF)为止。在StringTokenizer中使用delim StringTokenizer的第二个参数不是正则表达式。第二个方案的模式中应该有a+。@laune yep,你说得对。将很快修复答案。@laune-删除了我的评论,要求OP尝试同样的方法。。不知道他到底想要什么:P.检查他的评论。@TheLostMind With
split
不管怎样,我们还是回到了正则表达式,尽管形式温和;-)(我也删除了上面的评论。)还有:在模式的末尾添加一个“+”。谢谢你的帮助