用户输入:
{YYYY}./.{mm}-{CNo}\/{WEPNo}#{XNo+YNo}
您如何阅读这样的字符串并将其分成如下字典:
new Dictionary<String, String>() {
{"YYYY", "./." },
{"mm", "-"},
{"CNo", @"\/"},
{"WEPNo", "#"},
{"XNo+YNo", ""}
};
答案 0 :(得分:2)
组合正则表达式和LINQ,你可以这样做:
var input = @"{YYYY}./.{mm}-{CNo}\/{WEPNo}#{XNo+YNo}";
Regex ex = new Regex(@"\{(?<key>.+?)\}(?<value>[^{}]*)");
var dictionary = ex.Matches(input).Cast<Match>()
.ToDictionary(m => m.Groups["key"].Value, m => m.Groups["value"].Value);
答案 1 :(得分:1)
使用正则表达式:
var input = @"{YYYY}./.{mm}-{CNo}\/{WEPNo}#{XNo+YNo}";
Dictionary<string, string> dictonary = new Dictionary<string, string>();
Regex ex = new Regex(@"\{(?<key>.+?)\}(?<value>[^{]*)");
foreach (Match match in ex.Matches(input))
{
dictonary.Add(match.Groups["key"].Value, match.Groups["value"].Value);
}
答案 2 :(得分:0)
String str = @"{YYYY}./.{mm}-{CNo}\/{WEPNo}#{XNo+YNo}";
var dict = str.Split(new String[] { "{" }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => String.Concat("{", s))
.Select(s => new
{
key = String.Concat(s.Split(new String[] { "}" }, StringSplitOptions.None)[0], "}"),
value = s.Split(new String[] { "}" }, StringSplitOptions.None)[1],
})
.ToDictionary(s => s.key, s => s.value);
答案 3 :(得分:0)
我可能会使用正则表达式来解析输入字符串。
然后,我将创建一个包含所有值的类,并覆盖.ToString()
方法以输出回其原始字符串值。
此外,您应该显示输入字符串的至少一个“Example”值。否则,解释您的问题并提供基于代码的可靠答案有点困难。