SQL字符串解析需求:多分隔符拆分字符串为多列
多分隔符拆分字符串的可行方案
普通String.Split仅支持单一分隔符,要处理/、(、)这类多分隔符场景,核心思路是一次性匹配所有目标分隔符完成拆分,再过滤拆分产生的空元素。以下是主流编程语言的实现示例:
Python 实现
使用re.split直接匹配所有分隔符:
import re target_str = "A/B(D)C" # 正则匹配/、(、)三种分隔符,同时过滤空字符串 split_result = [item for item in re.split(r'[\/\(\)]', target_str) if item] print(split_result) # 输出: ['A', 'B', 'D', 'C']
C# 实现
两种方式可选,直接传分隔符数组或用正则:
string targetStr = "A/B(D)C"; // 方式1:给String.Split传入多分隔符数组 char[] separators = { '/', '(', ')' }; string[] result = targetStr.Split(separators, StringSplitOptions.RemoveEmptyEntries); // 方式2:用正则拆分并过滤空值 using System.Text.RegularExpressions; string[] regexResult = Regex.Split(targetStr, @"[\/\(\)]").Where(x => !string.IsNullOrEmpty(x)).ToArray(); // 两种方式结果均为: ["A", "B", "D", "C"]
Java 实现
结合正则拆分与流过滤空元素:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class SplitDemo { public static void main(String[] args) { String targetStr = "A/B(D)C"; List<String> result = Arrays.stream(targetStr.split("[\\/\\(\\)]")) .filter(str -> !str.isEmpty()) .collect(Collectors.toList()); System.out.println(result); // 输出: [A, B, D, C] } }
内容的提问来源于stack exchange,提问作者Saikrishna
相关产品推荐
相关产品推荐

