我正在尝试将字符串规范化,然后再进行解析。基本上删除逗号之前或之后的任何空格,如果两个或多个逗号只用空格分隔,则用一个逗号替换。
var r = new Regex(@"(\s*,+\s*)");
var query = r.Replace("my reg, is a disaster everytime , i,try ,it, yep, ,disaster.", ",");
输出应为:
my reg,is a disaster everytime,i,try,it,yep,disaster.
但是:
my reg,is a disaster everytime,i,try,it,yep,,disaster.
感谢任何帮助
答案 0 :(得分:5)
尝试
var r = new Regex(@"(\s|,)*,(\s|,)*");
基本上,用一个逗号替换任意数量的逗号和空格,其中至少存在一个逗号。
答案 1 :(得分:2)
non-Regex
解决方案:
var dirty = "my reg, is a disaster everytime , i,try ,it, yep, ,disaster.";
var clean = string.Join(",",
dirty.Split(new[] {","}, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Trim())
.Where(x => x.Length > 0));
输出:
my reg,is a disaster everytime,i,try,it,yep,disaster.
它是如何工作的?用","
符号拆分原始字符串,丢弃空字符串,从每个字符串的开头/结尾修剪所有空格,使用相同的","
连接非空字符串。
IMO比RegEx
答案 2 :(得分:0)
在原始字符串中,两个逗号之间有一个空格(“,,”),但正则表达式表示,+
,表示一个或多个连续的逗号。这是否有效:(\s*(,\s+)+\s*)
?