Java多场景下字符串内容提取并存入List的实现方案问询
实现指定字符串提取逻辑的方法
完全可以实现这个需求,下面是基于Java的具体实现方案:
核心思路
- 先判断字符串是否包含括号对
():- 若没有,直接将整个字符串作为唯一元素存入列表
- 若有,先提取括号前的内容(去除末尾多余空格),再提取括号内的内容,按逗号分割后逐个处理(去除前后空白),最后把两部分内容合并成列表
代码实现
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringExtractor { public static List<String> extractElements(String input) { List<String> result = new ArrayList<>(); // 匹配括号及内部内容的正则 Pattern pattern = Pattern.compile("\\((.*?)\\)"); Matcher matcher = pattern.matcher(input); if (!matcher.find()) { // 没有括号,直接加入整个字符串 result.add(input.trim()); return result; } // 提取括号前的内容,去除末尾空格 String prefix = input.substring(0, matcher.start()).trim(); result.add(prefix); // 提取括号内的内容,按逗号分割 String inside = matcher.group(1); String[] parts = inside.split(","); for (String part : parts) { // 去除每个元素的前后空白后加入列表 result.add(part.trim()); } return result; } public static void main(String[] args) { // 测试示例 String k1 = "Apple"; String k2 = "Apple Orange"; String k3 = "Apple (Banana, Orange, Grape)"; String k4 = "Apple Orange (Banana, Grape)"; String k5 = "Apple Orange (Banana Ice cream, Grape)"; System.out.println("k1 -> " + extractElements(k1)); System.out.println("k2 -> " + extractElements(k2)); System.out.println("k3 -> " + extractElements(k3)); System.out.println("k4 -> " + extractElements(k4)); System.out.println("k5 -> " + extractElements(k5)); } }
输出结果
运行上述代码后,输出与你给出的示例完全一致:
k1 -> [Apple] k2 -> [Apple Orange] k3 -> [Apple, Banana, Orange, Grape] k4 -> [Apple Orange, Banana, Grape] k5 -> [Apple Orange, Banana Ice cream, Grape]
内容的提问来源于stack exchange,提问作者Java Programmer
相关产品推荐
相关产品推荐

