Regex Split技术求助:拆分字段时出现空值问题
解决Regex拆分字段产生空值的问题
你的需求是拆分CustomerID、PaymentAmount、Date、EmailDateFourDays、RefNo这些字段,字段用逗号或换行分隔,但当前使用Regex.Split(fieldValue, "[\\s;,]" , RegexOptions.IgnoreCase)会出现空值,原因是:
- 正则
[\\s;,]匹配单个分隔符(空白、分号、逗号),当遇到连续分隔符(比如换行后加空格、多个逗号连在一起),拆分后会生成空字符串 - 字符串首尾如果有空白或分隔符,拆分后也会产生空值
解决方法:
优化正则表达式,匹配连续的分隔符,避免生成空值:
使用[\\s;,]+(加号表示匹配一个或多个连续的分隔符),代码如下:Regex.Split(fieldValue, "[\\s;,]+" , RegexOptions.IgnoreCase)彻底清除空值(可选),如果字符串首尾可能存在分隔符/空白,拆分后过滤掉空字符串:
var splitResult = Regex.Split(fieldValue, "[\\s;,]+" , RegexOptions.IgnoreCase) .Where(item => !string.IsNullOrWhiteSpace(item)) .ToArray();更精准匹配(针对你提到的逗号+换行格式),如果不需要匹配分号和空格,可以把正则缩小范围,只匹配换行符和逗号:
Regex.Split(fieldValue, "[\\r\\n,]+" , RegexOptions.IgnoreCase)
内容的提问来源于stack exchange,提问作者Shrayus
相关产品推荐
相关产品推荐

