如何将格式化字符串转换为Dictionary <string,string> format </string,string>

时间:2014-04-15 04:37:07

标签: c# regex

如何将字符串转换为字体格式,格式如下所示。

var ss =  "[TTT, sdfsdf],[sfsdf, sdfsdf],[T44TT, sdfsdf]";

4 个答案:

答案 0 :(得分:3)

以下代码创建一个Dictionary<string,string>,其中键是每组方括号中的第一个字符串,值是第二个字符串:

var ss =  "[TTT, sdfsdf],[sfsdf, sdfsdf],[T44TT, sdfsdf]";

var dict = ss.Split(new[] { "],", "[", "]" }, StringSplitOptions.RemoveEmptyEntries)
            .ToDictionary(i => i.Split(',')[0], i => i.Split(',')[1]);

结果字典有3个条目:

Key: TTT    Value: sdfsdf
Key: sfsdf  Value: sdfsdf
Key: T44TT  Value: sdfsdf

首先使用string.Split将初始字符串拆分为字符串数组。

每次遇到"],""[""]"时都会发生拆分。

这会产生一个像这样的字符串数组:

TTT, sdfsdf
sfsdf, sdfsdf
T44TT, sdfsdf

此数组随后调用了Linq扩展方法ToDictionary。这允许您指定一个键和值生成器方法,该方法可以在数组中的每个元素上运行,以创建键和值。

方法是:i => i.Split(',')[0](用逗号分隔字符串并抓住第一位)

和:i => i.Split(',')[1](用逗号分隔字符串并抓住第二位)

你有Dictionary

答案 1 :(得分:0)

假设您有一组实体(我使用了元组),您可以使用ToDictionary()为您的字典项目键和值:

var tuples = new List<Tuple<string, string>>
{
  new Tuple("TTT", "sdfsdf"), 
  new Tuple("sfsdf", "sfsdf")
};

var dictionary = tuples.ToDictionary(_ => _.Item1, _ => _.Item2);

答案 2 :(得分:0)

您可以使用正则表达式:

var ss = "[TTT, sdfsdf],[sfsdf, sdfsdf],[T44TT, sdfsdf]";

var result =
    Regex.Matches(ss, @"\[([^,]*),\s*([^,]*)\]").Cast<Match>()
    .ToDictionary(m => m.Groups[1], m => m.Groups[2]);

答案 3 :(得分:0)

我推荐以下代码。

var dictionary = ss.Substring(1, ss.Length - 2)
                   .Split(new string[] { "],[" }, StringSplitOptions.None)
                   .Select(_ => _.Split(','))
                   .ToDictionary(parts => parts[0], parts => parts[1]);