【问题标题】:C# Split namevaluepair string with delimitter in values using regexC# 使用正则表达式在值中使用分隔符拆分名称值对字符串
【发布时间】:2026-02-05 09:20:07
【问题描述】:

我有一个字符串

“FirstName=John, LastName=Smith, Address=1 Wall Street, NY”

其中需要拆分成字典为:

  • {"FirstName", "John"}
  • {"姓氏", "史密斯"}
  • {"地址", "1 Wall Street, NY"}

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

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

“FirstName=John,LastName=Smith,地址:1 Wall Street, NY”

如果= or : 充当键值对分隔符,上述结果如何?

【问题讨论】:

  • 用 C# 代替正则表达式会不会更容易
  • 如果 "," 被允许作为分隔符和文本,并且您没有正确的文字开始/结束“引号”,那么......这可能是不可能的或真的很难解析
  • @qamar 请注意,文字中允许使用“,”..如果您执行 split(','...) 那么...它将失败 LOL

标签: c# regex string split


【解决方案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);
}

【讨论】:

    最近更新 更多