无法从阵列中删除String

时间:2017-05-10 12:24:07

标签: java arrays

我目前在从数组列表中删除字符串时遇到一些问题。代码如下:

    String selectedCol = req.getParameter("col");
    if (selectedCol != null) {
        ArrayList < String > ar = new ArrayList < String > ();
        String removeColumn = layout.getColumn(selectedCol).getName();
        String layOut = "layout." + key + "." + layout.getName() + ".group";
        List < String > list = Arrays.asList(props.getProp(layOut, null).replace("[", "").replace("]", "").split(","));
        ar.addAll(list);
        ar.removeAll(Arrays.asList(removeColumn));
        props.putString(layOut, ar.toString().trim());
    }

所以数组“ar”填充以下内容:

  

[联系,创建]

我认为这可能是列表大小可能不正确但是当我ar.size()

时它会显示正确的大小

以下变量:

  

removeColumn

填充了“created”。

我尝试了以下内容:

ar.removeAll(Arrays.asList(removeColumn));

ar.remove(removeColumn);

应导致:

  

[接触]

但是使用removeall或remove不起作用。我试图在不需要循环的情况下实现这一目标。

帮助?

2 个答案:

答案 0 :(得分:4)

您已通过在","上拆分字符串来生成列表,但字符串中的项之间有空格,因此列表中的两个字符串为:"contact"和{{1 }}

如果必须以这种方式解析字符串,请将拆分正则表达式更改为" created",或者如果您需要它更宽容输入,", ",允许在之前或之后的可选空格。

答案 1 :(得分:0)

您的数组元素可能包含一些空格。哪个导致不匹配。您可以在拆分中使用“\ s *,\ s *”来摆脱那些空白区域。还可以使用trim()删除任何前导或尾随空格。

例如:

    List < String > list = Arrays.asList(props.getProp(layOut, null).replace("[", "").replace("]", "").trim().split("\\s*,\\s*"));