我正在读取包含段落的txt文件,我正在解析这些单词并将它们插入到列表中;但是,我也在插入空格。不知何故,我的正则表达式似乎每次遇到逗号或点时都不起作用,因为它增加了一个空间...如果有人可以提出一个可以修复它的正则表达式?感谢
public class Exercise225 {
public static void main(String... args) throws FileNotFoundException {
String file = "words.txt";
Scanner inFile = new Scanner(new File(file));
String[] words = null;
String line = "";
List list = new ArrayList();
while (inFile.hasNextLine()) {
line = inFile.nextLine();
words = line.split("[\n|\r|\t| |,|.|)|(|-|\"|!]");
for (int i = 0; i < words.length; i++) {
list.add(words[i].toLowerCase());
}
}
Collections.sort(list);
System.out.println(list.size());
Iterator listItr = list.iterator();
while (listItr.hasNext()) {
System.out.println(listItr.next());
}
inFile.close();
}
}
答案 0 :(得分:3)
您可以使用+
量词在一个或更多分隔符上拆分,而不是在一个分隔符上拆分。此外,您不需要在字符类中使用管道。
String regex = "[\n\r\t ,.)(\"!-]+";
words = line.split(regex);
答案 1 :(得分:0)
在用于拆分的正则表达式中使用\\s+
空格。这将在拆分期间匹配一个或多个空格。
答案 2 :(得分:0)
希望以下更改能够得到预期的结果
String regEx = "[\n|\r|\t| |,|.|)|(|-|\"|!]";
line = inFile.nextLine().replaceAll(regEx+"^", "");
if(line.length()<=0)continue;
words = line.split(regEx+"+");