Java中如何按指定位数拆分数组元素与字符串内数字分组
Java 两类拆分需求实现方案
需求1:逗号分隔数字串中提取位数大于2的数字分组
实现思路
先将原始字符串按逗号分割为单个数字字符串,遍历所有元素筛选出长度大于2的项即可。
代码示例
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class SplitLongNum { public static void main(String[] args) { String inputStr = "12,10,12914,10,641,10,11,11,2,10"; // 分割后过滤长度大于2的数字分组 List<String> result = Arrays.stream(inputStr.split(",")) .filter(item -> item.length() > 2) .collect(Collectors.toList()); // 输出结果:[12914, 641] System.out.println(result); } }
需求2:指定数组元素定向拆分处理
实现思路
按需求定义两条拆分规则:
- 带字母的元素:通过正则分组匹配分离数字部分和字母部分
- 纯数字元素:仅对指定元素(或按规则匹配的元素)拆分为前缀+最后一位的结构
如果需要调整拆分范围,只需修改纯数字元素的判断条件即可。
代码示例
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CustomSplit { // 匹配数字+字母组合的正则 private static final Pattern NUM_LETTER_PATTERN = Pattern.compile("(\\d+)([a-zA-Z]+)"); public static void main(String[] args) { List<String> inputList = Arrays.asList("12a", "129", "14a", "64", "1a", "11b", "2a"); List<List<String>> result = new ArrayList<>(); for (String item : inputList) { Matcher matcher = NUM_LETTER_PATTERN.matcher(item); if (matcher.matches()) { // 拆分数字和字母 result.add(Arrays.asList(matcher.group(1), matcher.group(2))); } // 此处可修改为仅指定元素拆分,比如item.equals("129") || item.equals("64") else if (item.matches("\\d+")) { // 纯数字元素拆分为前缀+最后一位 String prefix = item.substring(0, item.length() - 1); String suffix = item.substring(item.length() - 1); result.add(Arrays.asList(prefix, suffix)); } else { // 不符合规则的元素直接保留,可按需调整逻辑 result.add(Arrays.asList(item)); } } // 输出结果:[[12, a], [12, 9], [14, a], [6, 4], [1, a], [11, b], [2, a]] System.out.println(result); } }
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

