【发布时间】:2018-08-08 21:30:05
【问题描述】:
我有一个格式如下的字符串
Key1="value1" Key2="value2" Key3="value3"
我想从字符串中提取键和值。 "value" 可以包含换行、单引号、双引号等。
s = @"interactionId=""1f367d11-1f9d-4ff4-9fa3-e793dc0f7fe4"" timestamp=""2018-08-07T18:25:38.8309683Z"" textPayload=""#"" activityJson=""{
""type"": ""conversationUpdate"",
""id"": ""e3abig35e395"",
""timestamp"": ""2018-08-07T18:25:15.415+00:00"",
""localTimestamp"": ""2018-08-07T11:25:15-07:00""";
我能写这个。但是当 Value 中包含引号时它确实有效。
var ItemRegex = new Regex(@"(?<key>[^, ]+)=(?<value>[""].+?[""]|[^ ]+)", RegexOptions.Multiline);
result =
ItemRegex.Matches(message)
.Cast<Match>()
.Select(m => new
{
key = m.Groups["key"].ToString().Trim('"'),
value = m.Groups["value"].ToString().Trim('"')
})
.ToDictionary(kvp => kvp.key, kvp => kvp.value);
如何转义引号?
【问题讨论】: