Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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# - Fatal编程技术网

C# 从逗号分隔字符串中的键值对中获取值

C# 从逗号分隔字符串中的键值对中获取值,c#,C#,我有如下字符串值: var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}" var finalResult = "August,2012"; 我需要进行如下转换: var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}" var finalResult = "August,2012"

我有如下字符串值:

var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}"
var finalResult = "August,2012";
我需要进行如下转换:

var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}"
var finalResult = "August,2012";
有人知道怎么做吗?

您需要执行3个步骤(如果您希望像这样手动执行)

卸下支架

var s = result.SubString(1, result.Length - 2);
var pairs = s.Split(new[]{','});
拆分键值对

var s = result.SubString(1, result.Length - 2);
var pairs = s.Split(new[]{','});
通过在
=
符号上拆分来提取值

var resultset = pairs.Select(x => x.Split(new[]{'='})[1]).ToList();

可以使用string.Replace();和string.Split()

不带正则表达式(如果只有这两对):


因此,如果您处理的是kev值对,我会将您的输入转换为
字典

现在,您可以轻松获得最终结果:

var finalResult = String.Join(",", settings.Values); // "August,2012"
或通过其键指定某个特定值:

var month = settings["DimensionTransactionMonth"]; // "August"

这是一条单行线,因此我看起来很聪明,它不依赖于键值对的计数:

var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}";

var stringValues = string.Join(",", result.Trim('{', '}').Split(',').Select(x => x.Split('=')[1]));

Console.Write(stringValues);
输出:

August,2012
话虽如此,我还是支持Sergey Berezovskiy的
IDictionary
查找解决方案

说明:

result.Trim('{', '}').Split(',').Select(x => x.Split('=')[1])
细分:

1. .Trim('{', '}')
移除外部大括号

结果:“DimensionTransactionMonth=8月,DimensionTransactionYear=2012”

将第一步的结果转换为“,”上的数组拆分

结果:[“DimensionTransactionMonth=8月”,“DimensionTransactionYear=2012”]

将第二步中的每个项目投影到一个
IEnumerable
中,同时
的“DimensionTransactionMonth=August”
拆分为
[“DimensionTransactionMonth”,“August”]
并取该数组中的最后一个值
“August”

不,我们可以使用
string将这个
IEnumerable
连接在一起。连接(','…)
如下:

string.Join(",", result.Trim('{', '}').Split(',').Select(x => x.Split('=')[1]));

阅读.NET.Or JSON序列化/反序列化中的正则表达式,这是一个JSON字符串吗?您可以将其反序列化为.NET对象,您可以将其替换为:,但字符串值“August”周围仍缺少引号
3. .Select(x => x.Split('=')[1])
string.Join(",", result.Trim('{', '}').Split(',').Select(x => x.Split('=')[1]));