删除ArrayList中每个索引的前导空格

时间:2019-03-11 19:28:35

标签: java arraylist toarray

因此,除修剪功能外,其他所有功能均正常运行。我不知道它是否有效。

实际上,我正在使用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...]

任何建议都将不胜感激!

2 个答案:

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