A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

创建ArrayList对象,添加成员,如"abcd3","abcde"等,代码实现方法体:public void deleteNum(ArrayList<String> list){...}。要求凡是成员中包含有数字(0~9)的均删除,如成员"abcd3"是需要删除的。

public static void main(String[] args) {
                ArrayList<String> list = new ArrayList<>();
                list.add("abcs");
                list.add("abcs2");
                list.add("abcsd");
                list.add("abcsda");

                deleteNum(list);
        }

        public static void deleteNum(ArrayList<String> list) {
                Iterator<String> it = list.iterator();
                        String regex = "\\d";
                        while(it.hasNext()) {
                                if(it.next().matches(regex)) {
                                        it.remove();
                                }
                        }
                        System.out.println(list);
        }

为什么我删不掉里面含有数字的字符串,"\\d"不是代表任意数字吗,求大神解答TAT

2 个回复

倒序浏览
Frankle 来自手机 中级黑马 2016-7-23 09:53:29
沙发
正则的写得不对,数字前面的字母也应该作为表达式的一部分,字母的正则表达式是[a~zA~Z],它出现了多次,那么就是[a~zA~Z]+,后面的数字出现1次以上,则为\\d+,所以正确的表达式应该是这样:String regex = "[a~zA~Z]+\\d+";
回复 使用道具 举报
cat73 黑马帝 2016-7-23 10:00:18
藤椅
换这个正则:
  1. ^.*\\d.*$
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马