黑马程序员技术交流社区

标题: 字符串中只要含数字就删除,代码怎么写 [打印本页]

作者: 敲敲乐z    时间: 2016-8-12 21:46
标题: 字符串中只要含数字就删除,代码怎么写
分析以下需求,并用代码实现:
(1)定义List集合,存入多个字符串
(2)删除集合中包含0-9数字的字符串(只要字符串中包含0-9中的任意一个数字就删除此字符串)
(3)然后利用迭代器遍历集合元素并输出
作者: 13411939415    时间: 2016-8-12 22:30
用正在玩表达式吧
String s = "a2asfdgsdd2g";
System.out.println(s.matches("\\D+"));         //含有数字返回false
作者: zhuangyinzhi    时间: 2016-12-27 01:19
本帖最后由 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三种方法都可以




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2