我想删除列表中的所有值,除了那些只包含Numbers的值。像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)
但它显示了所有的单词,比如你好。
答案 0 :(得分:5)
这就是我要做的事情:
private ArrayList<String> filters(ArrayList<String> parameter) {
String regex = "\\d+";
ArrayList<String> result = new ArrayList<>();
for(String x : parameter) {
if(x.matches(regex)) {
result.add(x);
}
}
return result;
}
这样你就不会对提供的参数产生任何副作用。
答案 1 :(得分:1)
如果我是你,我会使用Pattern和Matcher。 只需创建一个新的Pattern.compile(正则表达式)和一个新的Matcher(行)。 然后在Matcher.find()
上遍历Matcher答案 2 :(得分:1)
试试这个。
private ArrayList<String> filters(ArrayList<String> resulting) {
String regex = "[0-9]+";
// This regex also works
String regex = "\\d+";
ArrayList<String> abc = new ArrayList<String>();
for(int i = 0; i < resulting.size(); i++) {
if(resulting.get(i).matches(regex)) {
abc.add(resulting.get(i));
}
}
return abc;
}