【问题标题】:How do I modify my arrayList as I enter it into another arrayList such that to remove and change it's values?当我将它输入到另一个 arrayList 中时,如何修改我的 arrayList 以便删除和更改它的值?
【发布时间】:2013-03-13 04:34:29
【问题描述】:

我创建了一个数组列表,用于存储文本文件中的单词。但现在我需要创建一个单独的数组列表,它只从文件中的单词中获取字母,将它们恢复为小写,并删除单词中或其周围的所有标点符号。所以基本上它会恢复所有单词,并从中删除所有提到的元素。

        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 语句检查字符串以删除字符串中的该位置。

接下来我尝试添加单词,但删除大写并将其更改为小写。

我有点迷茫,不知道我在这里用这个位做什么......

【问题讨论】:

    标签: java string arraylist


    【解决方案1】:

    我对您的问题的解释是您想要遍历一个单词列表,将它们转换为小写,删除标点符号,然后将它们插入另一个列表?如果是这种情况,那么我不明白您为什么需要修改原始列表。你可以这样做:

    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
    }
    

    【讨论】:

    • 非常感谢Vivian,这个方法有效地去除了所有的标点符号,而且是一个更简单的方法,我几乎尴尬的是我一开始没有想到。但是,我将尝试完成剩下的问题,即将所有大写字母转换为小写字母。我将尝试简单地使用此替换所有方法。
    • 好的,所以我这样做了,它很愚蠢。所以我只是尝试了 gram = gram.toLowerCase();它奏效了。非常感谢您的帮助。
    • @RyanTibbetts 我错过了您必须将其转换为小写的部分。是的,这样做应该行得通!
    【解决方案2】:

    为什么不像这样循环遍历字符串中的每个字符:

    for (char c : gram.toCharArray()) {
      ...
    }
    

    然后检查您的字符是否在排除字符列表中,如果不是则将其小写并将其添加到您的输出列表中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 2023-03-23
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      相关资源
      最近更新 更多