CSVHelper如何配置正则同时移除表头的空格与短横线
实现方法
该需求完全可实现,匹配失败的核心原因是正则字符组中短横线的写法有误:短横线在[]包裹的字符集合中,如果没有放在集合首尾、也未做转义,会被正则引擎识别为「范围匹配符」(比如a-z匹配a到z的所有小写字母),不会按字面量匹配短横线本身。
你可以直接使用以下任意一种正则规则,同时移除表头中的空格和短横线:
- 写法1:将短横线放在字符组首尾,无需额外转义
PrepareHeaderForMatch = header => Regex.Replace(header.Header, @"[\s-]", string.Empty) - 写法2:对短横线做转义处理,放置位置不受限制
PrepareHeaderForMatch = header => Regex.Replace(header.Header, @"[\s\-]", string.Empty)
效果验证
针对你给出的示例表头:
First Name, Last Name, E-mail Address, Phone
处理后得到的表头为:FirstName,LastName,EmailAddress,Phone,完全符合预期。
常见错误说明
之前添加短横线匹配失败,大概率是用了错误的正则写法:
- 写为
@"\s-":该规则只会匹配「空白字符后紧跟短横线」的连续组合,无法匹配单独出现的空格或短横线 - 短横线放在字符组中间未转义(比如
@"[\s-a]"):会被正则引擎识别为范围匹配规则,无法正确匹配字面量短横线
内容的提问来源于stack exchange,提问作者ckelsoe
相关产品推荐
相关产品推荐

