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]));