我目前在从数组列表中删除字符串时遇到一些问题。代码如下:
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不起作用。我试图在不需要循环的情况下实现这一目标。
帮助?
答案 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*"));