【发布时间】:2014-05-28 13:10:20
【问题描述】:
我想从列表中删除所有值,除了那些只包含数字的值。比如123222
private ArrayList<String> filters(ArrayList<String> resulting) {
String regex = "[0-9]+";
ArrayList<String> abc =resulting;
for(String x : resulting)
{
if(!x.matches(regex))
{
abc.remove(x);
}
}
return abc;
}
我在这里传递这个..
if (results != null) {
options.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, filters(results)));
}
我已经打电话给filters(results)
但它显示了所有像你好这样的词,拜托。
【问题讨论】:
-
您不能在迭代集合时对其进行修改。我建议您不要使用“增强型”for 循环,而是使用带有
Iterator的旧循环。迭代器实例有一个remove()方法,您可能会发现它很有用。 -
此外,您将对某人通过参数提供给您的集合产生令人讨厌的副作用。也许这就是您想要的,但如果不是,我建议您创建一个仅包含与正则表达式匹配的元素的新集合。
-
出于这个原因..我已将其初始化为 abc。我删除 abc 没有结果?请分享一些代码。
-
字符串正则表达式 = "\\d+";可能会有所帮助。其他想法是通过索引而不是对象删除
-
@Nepster 尝试使用 ArrayList
abc = new ArrayList (resulting);用于初始化 abc