Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将格式化字符串转换为字典<;字符串,字符串>;总体安排_C#_Regex - Fatal编程技术网

C# 如何将格式化字符串转换为字典<;字符串,字符串>;总体安排

C# 如何将格式化字符串转换为字典<;字符串,字符串>;总体安排,c#,regex,C#,Regex,如何将以下格式的字符串转换为字典格式。 var ss = "[TTT, sdfsdf],[sfsdf, sdfsdf],[T44TT, sdfsdf]"; 下面的代码创建一个字典,其中键是每组方括号中的第一个字符串,值是第二个字符串: var ss = "[TTT, sdfsdf],[sfsdf, sdfsdf],[T44TT, sdfsdf]"; var dict = ss.Split(new[] { "],", "[", "]" }, StringSplitOptions.Remov

如何将以下格式的字符串转换为字典格式。

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

下面的代码创建一个
字典
,其中键是每组方括号中的第一个字符串,值是第二个字符串:

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]
(用逗号分割字符串并抓取第二位)


这里有您的
字典

假设您有一个实体集合(我使用了元组),您可以使用
ToDictionary()
为您的字典投影键和值:

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

var dictionary = tuples.ToDictionary(_ => _.Item1, _ => _.Item2);
var tuples=新列表
{
新元组(“TTT”、“sdfsdf”),
新元组(“sfsdf”、“sfsdf”)
};
var dictionary=tuples.ToDictionary(=>u0.Item1,=>0.Item2);
您可以使用正则表达式:

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]);
var ss=“[TTT,sdfsdf],[sfsdf,sdfsdf],[T44TT,sdfsdf]”;
var结果=
Regex.Matches(ss,@“\[([^,]*),\s*([^,]*)\]).Cast()
.ToDictionary(m=>m.Groups[1],m=>m.Groups[2]);

我推荐以下代码

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

这是无效的C#,不足以说明你在问什么。用有效的C#解释你的问题。你能更具体一点吗?变量ss的类型是什么?您可以通过如下方式构造字典:var dict=newdictionary{{{“TTT”,“sdfsdf”},{“sfsdf”,“sdfsdf”},{“T44TT”,“sdfsdf”};“ss”是任何对象类型。为变量“ss”构造一个字典。Cast需要添加什么名称空间?添加
System.Linq
System.Text.RegularExpressions
。请添加如何在控制台上显示它们的代码well@EhsanSajjad:添加说明!