我有一个以下格式的字符串
Key1="value1" Key2="value2" Key3="value3"
我想从字符串中提取键和值。 “值”可以包含换行,单引号,双引号等。
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);
我如何转义引号?
答案 0 :(得分:0)
问题出在输入数据上; activityJson
的值中包含引号,因此很难确定数据的结束位置。
如果您能够更改输入数据,则绝对应该这样做。
例如,在xml中,双引号用"
进行转义:
<data attrib="value with "quotes"" />