如果ArrayList <string>包含除数字</string>以外的单词,则删除它们的值

时间:2014-05-28 13:10:21

标签: java android string

我想删除列表中的所有值,除了那些只包含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)

中调用它

但它显示了所有的单词,比如你好。

3 个答案:

答案 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;
}