因此,除修剪功能外,其他所有功能均正常运行。我不知道它是否有效。
实际上,我正在使用ArrayList进行反向索引。从文件中提取行,拆分为单词(标记)并删除标点符号。当我涉及删除停用词的部分时,它与文件中提供的停用词不匹配。我认为这是因为ArrayList的每个索引的前导空间。
StopWords列表:
a, is, the, of, all, and, to, can, be, as, once, for, at, am, are, has, have, had, up, his, her, in, on, no, we, do
我的策略:
String [] TempArray = new String[word.size()];
for (int i = 0; i < word.size(); i++) {
word.set(i, word.get(i).toLowerCase());
word.set(i, word.get(i).replaceAll("[^a-zA-Z]", ""));
}
for (int i = 0; i < word.size(); i++) {
TempArray[i] = word.get(i);
TempArray[i] = TempArray[i].trim();
word.set(i, TempArray[i]);
System.out.println(word.get(i));
}
输出:
[a, blunder, by, anton, chekhov, , an, illustration, for, the, story, a, blunder, by, the, author, anton, chekhov, portrait, of, ivan, lazhechnikov...]
任何建议都将不胜感激!
答案 0 :(得分:3)
怎么样:
Arrays.stream(TempArray)
.filter(s -> s != null)
.map(String::trim)
.toArray(String[]::new);
这将创建没有前导或尾随空格的新数组。
答案 1 :(得分:0)
只需扩展一点@Andronicus的答案,这还将从结果数组中删除空字符串。
Arrays.stream(TempArray)
.filter(Objects::nonNull)
.map(String::trim)
.filter(!String::isEmpty)
.toArray(String[]::new);