本帖最后由 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三种方法都可以 |