【发布时间】:2018-01-24 08:19:15
【问题描述】:
我有一个来自 github 项目的文本文件(所有有效英文单词的集合),看起来像这样 words.txt
我的文本文件在我的项目中的resources 文件夹下。
我还有一个从 mysql 表中获取的行列表。 我要做的是检查每一行中的所有单词是否都是有效的英文单词,这就是为什么我将每一行与我的文件中包含的单词进行比较。
这是我迄今为止尝试过的:
public static void englishCheck(List<String> rows) throws IOException {
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
int lenght, occurancy = 0;
for ( String row : rows ){
File file = new File(classLoader.getResource("words.txt").getFile());
lenght = 0;
if ( !row.isEmpty() ){
System.out.println("the row : "+row);
String[] tokens = row.split("\\W+");
lenght = tokens.length;
for (String token : tokens) {
occurancy = 0;
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null ){
if ((line.trim().toLowerCase()).equals(token.trim().toLowerCase())){
occurancy ++ ;
}
if (occurancy == lenght ){ System.out.println(" this is english "+row);break;}
}
}
}
}
}
这仅适用于第一行,之后我的方法循环遍历仅显示它们的行并忽略比较,我想知道为什么这不适用于我的行集,如果我也可以像这样List<String> raws = Arrays.asList(raw1, raw2, raw3 ) 等预定义我的列表
【问题讨论】:
-
超级坏主意:你在这里创建一个 n * m 双循环。你绝对不想为你的每一个字一遍又一遍地阅读那个文件。
-
@DevRj /words.txt 中的数据格式是什么??一行一行的在同一行,给个样例
-
提示:当你编辑你的源代码...确保正确格式化它。
-
@GhostCat 也许这是一个坏主意,也许您可以提供一种方法来验证该文件中是否包含一行中的每个单词,以及一种将该文件立即读入内存的方法,因为它是您的建议。谢谢
标签: java arraylist io string-comparison