如何将格式为2022{yyyy}{mm}{dd}的字符串分割为ArrayList?
Java字符串分割实现方案
针对将字符串 "2022{yyyy}{mm}{dd}" 分割为包含 2022、yyyy、mm、dd 的 ArrayList,可以用以下两种常用方法实现:
方法一:正则表达式分割
利用正则匹配 { 或 } 作为分隔符,分割后过滤掉空字符串即可:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class StringSplitDemo { public static void main(String[] args) { String line = "2022{yyyy}{mm}{dd}"; // 按{或}分割,同时过滤空字符串 String[] parts = line.split("[{}]"); List<String> resultList = new ArrayList<>(Arrays.asList(parts)); // 移除分割后产生的空元素 resultList.removeIf(String::isEmpty); // 输出结果 for (String item : resultList) { System.out.println(item); } } }
运行后输出:
2022 yyyy mm dd
方法二:手动遍历提取
如果不想依赖正则,也可以手动遍历字符串,逐个字符判断并提取目标内容:
import java.util.ArrayList; import java.util.List; public class StringExtractDemo { public static void main(String[] args) { String line = "2022{yyyy}{mm}{dd}"; List<String> resultList = new ArrayList<>(); StringBuilder current = new StringBuilder(); for (char c : line.toCharArray()) { if (c == '{' || c == '}') { if (current.length() > 0) { resultList.add(current.toString()); current.setLength(0); } } else { current.append(c); } } // 处理最后一段未被包裹的内容 if (current.length() > 0) { resultList.add(current.toString()); } // 输出结果 for (String item : resultList) { System.out.println(item); } } }
这个方法通过遍历每个字符,遇到{或}时就把当前积累的字符串加入列表,最终也能得到目标结果。
内容的提问来源于stack exchange,提问作者hanchao
相关产品推荐
相关产品推荐

