我有一个像下面的字符串值:获取以逗号分隔字符串从键值对值
var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}"
我需要改造象下面这样:
var finalResult = "August,2012";
有谁知道该怎么办它?
我有一个像下面的字符串值:获取以逗号分隔字符串从键值对值
var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}"
我需要改造象下面这样:
var finalResult = "August,2012";
有谁知道该怎么办它?
因此,你面对的千电子伏 - 值对,我想你的输入转换为Dictionary<string,string>
:
var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}";
var settings = result.Trim('{', '}')
.Split(',')
.Select(s => s.Trim().Split('='))
.ToDictionary(a => a[0], a => a[1]);
现在您可以很容易地得到最终结果:
var finalResult = String.Join(",", settings.Values); // "August,2012"
或它的键一些特定的值:
var month = settings["DimensionTransactionMonth"]; // "August"
你需要做3个步骤(如果你希望手动这样做)。
删除括号
var s = result.SubString(1, result.Length - 2);
斯普利特键值对
var pairs = s.Split(new[]{','});
提取物对=
标志由分裂值
var resultset = pairs.Select(x => x.Split(new[]{'='})[1]).ToList();
非常明确的答案:) +1 –
这一个也正确。谢谢。 – Tun
你可以使用string.Replace();和string.Split();
var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}"
var splitValues = result.Replace("{","").Replace("}","").Split(",");
var month = splitValues[0].Split("=")[1];
var year = splitValues[1].Split("=")[1];
var finalResult = string.Format("{0},{1}", month, year);
var values = string.Join(",", result.Split(',').Select(o => o.Split(new[] { '=', '{', '}' })[1]));
'resultSplit'?你有没有试过编译它? –
@TimSchmelter,谢谢,我在格式化过程中弄坏了它。 – Backs
没有正则表达式(如果只有这两个对):
string text = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}";
var token = text.Trim('{', '}').Split(',').Select(t => t.Trim());
string month = token.First().Split('=').Last().Trim();
string year = token.Last().Split('=').Last().Trim();
string finalResult = string.Format("{0},{1}", month, year);;
这里是一个衬垫上,这样我可以看看聪明的,它不依赖于键值对的Count
:
var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}";
var stringValues = string.Join(",", result.Trim('{', '}').Split(',').Select(x => x.Split('=')[1]));
Console.Write(stringValues);
输出:
August,2012
话虽如此,我将与谢尔盖Berezovskiy的解决方案去查找IDictionary
。
说明:
result.Trim('{', '}').Split(',').Select(x => x.Split('=')[1])
分拆下:
1. .Trim('{', '}')
移除外花括号。
结果: “DimensionTransactionMonth =八月,DimensionTransactionYear = 2012”
2. .Split(',')
打开步骤之一的结果为在一个Array分裂 ''
结果:[ “DimensionTransactionMonth =八月”, “DimensionTransactionYear = 2012”]
3. .Select(x => x.Split('=')[1])
项目从步骤2的每个项目成IEnumerable<string>
因为它这个它Splits
"DimensionTransactionMonth=August"
为["DimensionTransactionMonth","August"]
,我们采取的最后一个值数组"August"
没有在我们可以使用string.Join(',' ...)
像这样加入这个IEnumnerable<string>
一起回来:
string.Join(",", result.Trim('{', '}').Split(',').Select(x => x.Split('=')[1]));
阅读有关.NET中的正则表达式。 –
或者JSON序列化/反序列化 – Dimitri
这是一个Json字符串吗?您可以将其反序列化为.NET对象 – Amicable