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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分析以下需求,并用代码实现:
(1)定义List集合,存入多个字符串
(2)删除集合中包含0-9数字的字符串(只要字符串中包含0-9中的任意一个数字就删除此字符串)
(3)然后利用迭代器遍历集合元素并输出

2 个回复

倒序浏览
用正在玩表达式吧
String s = "a2asfdgsdd2g";
System.out.println(s.matches("\\D+"));         //含有数字返回false
回复 使用道具 举报
本帖最后由 zhuangyinzhi 于 2016-12-27 01:21 编辑

[Java] 纯文本查看 复制代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* 3.分析以下需求,并用代码实现: (1)定义List集合,存入多个字符串
* (2)删除集合中包含0-9数字的字符串(只要字符串中包含0-9中的任意一个数字就需要删除此整个字符串)
* 
* (3)然后利用迭代器遍历集合元素并输出
* 
* @author zhuan_f
*
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public class Practice03 {

        public static void main(String[] args) {
                List list = new ArrayList();
                list.add("java");
                list.add("131");
                list.add("1fjfj");
                list.add("1fjfjdsdsdsadaaa1");
                list.add("ggwgg1");

                // demo1(list);
                // demo2(list);
                // demo3(list);

                Iterator it = list.iterator();
                while (it.hasNext()) {
                        System.out.println(it.next());
                }
        }

        private static void demo3(List list) {
                String regex = "\\D+";

                for (int i = 0; i < list.size(); i++) {
                        String s = (String) list.get(i); // abc
                        boolean b = s.matches(regex);
                        if (!b) {
                                list.remove(s);
                                i--;
                        }
                }
        }

        private static void demo2(List list) {
                String regex = "\\d";// 数字的正则表达式
                Pattern pattern = Pattern.compile(regex);
                for (int i = 0; i < list.size(); i++) {
                        String s = (String) list.get(i);
                        Matcher matcher = pattern.matcher(s);
                        if (matcher.find()) {// 这里只能使用if,不能用while
                                list.remove(i--);
                        }
                }
        }

        private static void demo1(List list) {
                for (int i = 0; i < list.size(); i++) {// 遍历集合元素
                        String s = (String) list.get(i);// 将集合元素转换为字符串
                        char[] chs = s.toCharArray();// 将字符串转换为字符数组
                        for (int j = 0; j < chs.length; j++) {// 遍历字符数组的每个个字符
                                char c = chs[j];
                                if (c >= '0' && c <= '9') {// 如果字符数组中的每个字符是否在0-9字符之间,
                                        list.remove(i--);// 用for循环删除集合内容,索引必须递减
                                        break;
                                }
                        }
                }
        }
}
demo1,demo2,demo3三种方法都可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马