我制作了一个数组列表,用于存储文本文件中的单词。但是现在我需要创建一个单独的数组列表,只接收文件中单词的字母将它们恢复为小写并删除单词或其周围的所有标点符号。所以基本上它会从所有单词中删除所有提到的元素。
List<String> grams = new ArrayList<String>();
for(String gram : words){
gram = gram.trim();
for(int i=0,int l=gram.size();i<l;++i){ //this line is wrong
const String punChars = ",[]:'-!_().?\/~"; //this line is wrong
if(gram.indexOf(i) != -1){ //this line is wrong
gram.remove(i); //this line is wrong
}
gram.add(gram.remove(0).toLowerCase()); //this line is wrong
}
}
我基本上尝试读取数组中选择字符串中的每个字符,因为我将它放入新数组列表中然后如果它有任何标点符号或其中我删除它:我尝试使用一个const存储标点符号值然后用if语句检查字符串以删除字符串中的那个位置。
接下来我尝试添加单词,但删除大写并将其更改为小写。
我有点失落,不知道我在这里做了什么......
答案 0 :(得分:2)
我对您的问题的解释是,您想要查看单词列表,将它们转换为小写,删除标点符号,然后将它们插入另一个列表中?如果是这种情况,那么我不明白为什么你需要修改原始列表。你可以这样做:
for(String gram : words) {
gram = gram.trim(); //trim string
gram = gram.replaceAll("[^A-Za-z0-9]", ""); //remove any non alphanumeric characters
grams.add(gram); //add to the grams list
}
答案 1 :(得分:0)
为什么不循环遍历字符串中的每个字符,如下所示:
for (char c : gram.toCharArray()) {
...
}
然后检查你的角色是否在被排除的字符列表中,如果不是,则将其小写并将其添加到输出列表中?