C#使用正则表达式拆分带有分隔符的namevaluepair字符串

时间:2015-01-22 03:53:30

标签: c# regex string split

我有一个字符串

  

" FirstName = John,LastName = Smith,地址= 1华尔街,纽约"

需要拆分为字典:

  • {" FirstName"," John"}
  • {" LastName"," Smith"}
  • {"地址"," 1华尔街,纽约"}

如果考虑到地址字段值中包含分隔符Regex,如何使用','实现这一目标?

还可以说我有以下字符串(注意地址中的冒号):

  

" FirstName = John,LastName = Smith,地址:1华尔街,纽约"

上述结果如何使用= or :作为键值对分隔符?

1 个答案:

答案 0 :(得分:1)

假设密钥不能包含任何分隔符(逗号后面应该跟有密钥来分隔对)

var data = "FirstName=John, LastName=Smith, Address:1 Wall Street, NY, USA, TestKey=TestValue";
var dic = new Dictionary<string, string>();
var reg = @"([^=:,]*)[=:](.*?)(?:$|,\s*(?=[^=:,]*[=:]))";
foreach (Match m in Regex.Matches(data, reg)) {
    var key = m.Groups[1].Value;
    var val = m.Groups[2].Value;
    dic[key] = val;
    Console.WriteLine("{0} = {1}", key, val);
}