Java中匹配指定模式时如何保留部分元素并忽略列表剩余内容?
实现指定提取逻辑的Java代码修改方案
需求说明
输入列表为 [56, 4, "2 2022 04 06", 1, 1, 1](注:第三项是含空格的字符串),当前代码输出 [56, 4, 1, 1, 1],需实现:提取第三项中的数字"2",同时忽略该元素剩余内容及列表后续所有元素,最终输出 [56, 4, 2]。
修改后的代码
private List<Integer> listaPunktowInt(List<String> lista) { String liniaString = ""; List<Integer> list = new ArrayList<>(); Iterator<String> it = lista.iterator(); while (it.hasNext()) { liniaString = it.next(); // 判断当前元素是否包含空格 if (liniaString.contains(" ")) { // 按空格拆分,取第一个数字部分 String firstNum = liniaString.split(" ")[0]; // 验证为纯数字后加入列表 if (Pattern.matches("\\d+", firstNum)) { list.add(Integer.parseInt(firstNum)); } // 终止循环,不再处理后续元素 break; } // 处理纯数字字符串的常规情况 if (Pattern.matches("\\d+", liniaString)) { list.add(Integer.parseInt(liniaString)); } } System.out.println(list); return list; }
关键改动说明
- 泛型规范:将方法参数从
List lista改为List<String> lista,避免类型转换隐患; - 空格元素处理:新增判断逻辑,当元素包含空格时,拆分字符串取第一个数字片段,验证后加入结果列表;
- 终止遍历:处理完带空格的元素后,用
break立即终止循环,跳过后续所有元素; - 正则优化:将原正则
\d*改为\d+,避免匹配空字符串的无效情况。
内容的提问来源于stack exchange,提问作者molyyyllom
相关产品推荐
相关产品推荐

