【问题标题】:How do I replace characters in every string in my list in java?java - 如何替换java列表中每个字符串中的字符?
【发布时间】:2014-01-12 16:15:56
【问题描述】:

我有一个字符串列表,其中大部分是多个单词:

"how are you"
"what time is it"

我想从这个列表中的每个字符串中删除空格:

"howareyou" 
"whattimeisit" 

我知道Collections.replaceAll(list, to replace, replace with),但这仅适用于具有该精确值的字符串,而不适用于每个字符串中的每个实例。

【问题讨论】:

    标签: java string list replaceall


    【解决方案1】:

    您必须对列表中的每个字符串应用替换函数。

    由于字符串是不可变的,您必须创建另一个列表来存储没有空格的字符串。

    List<String> result = new ArrayList<>();
    
    for (String s : source) {
        result.add(s.replaceAll("\\s+", ""));
    }
    

    不可变意味着对象不能被改变,如果你想改变它的状态,它必须创建一个新的。

    String s = "how are you";
    
    s = s.replaceAll("\\s+", "");
    

    如果您没有将新字符串分配给变量 s,则函数 replaceAll 将返回新字符串,那么仍然会有空格。

    【讨论】:

    • 对不起,我忘了评论(不知道我可以),感谢您的帮助,就像一个魅力!我很高兴为我所有的编程问题找到了一个有用的新社区!
    【解决方案2】:

    听起来不是很有用。

    但是试试这个:

    import java.util.Arrays;
    import java.util.List;
    
    /**
     * http://stackoverflow.com/questions/20760578/how-do-i-replace-characters-in-every-string-in-my-list-in-java/20760659#20760659
     * Date: 12/24/13
     * Time: 7:08 AM
     */
    public class SpaceEater {
        public static void main(String[] args) {
            List<String> stringList = Arrays.asList(args);
            System.out.println("before: " + stringList);
            for (int i = 0; i < stringList.size(); ++i) {
                stringList.set(i, stringList.get(i).replaceAll("\\s+", ""));
            }
            System.out.println("after : " + stringList);
        }
    }
    

    disrvptor 是正确的 - 原始 sn-p 没有改变列表。这个可以。

    【讨论】:

    • 这不会修改列表中的值。
    • @disrvptor 现在可以了。
    【解决方案3】:

    你可以试试这个:

    无需定义新的数组列表。使用list.set这个set用指定的元素替换这个列表中指定位置的元素。

    int i = 0;
    for (String str : list)
    {
      list.set(i, str.replaceAll(" ", ""));
      i++;
    }
    

    输出

    for (String s : list)
    {
      System.out.println(s);
    }
    //Thisisastring
    //Thisisanotherstring
    

    【讨论】:

    • 也很有帮助,虽然我更喜欢两个列表的方式,以防我以后使用原始列表。
    【解决方案4】:

    我知道如何做到这一点的唯一方法是遍历列表,对每个对象执行替换操作,然后用新对象替换原始对象。最好使用 2 个列表(源和目标)来处理。

    【讨论】:

    • 不,一份清单就可以了。见上文。
    • 一个列表就可以了,但在 CPU 使用方面可能效率不高。
    • 没有数据支持。无论哪种方式,这都是无关紧要的微优化。
    猜你喜欢
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多