我有如下字符串值:
var result = "{DimensionTransactionMonth=August, DimensionTransactionYear=2012}"
我需要改变如下:
var finalResult = "August,2012";
有谁知道怎么做?
答案 0 :(得分:4)
这是一个单行,所以我看起来很聪明,它不依赖于键值对的Count
:
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 = August,DimensionTransactionYear = 2012”
2. .Split(',')
将第一步的结果转换为','
上的数组拆分结果:[“DimensionTransactionMonth = August”,“DimensionTransactionYear = 2012”]
3. .Select(x => x.Split('=')[1])
将第2步中的每个项目投射到IEnumerable<string>
,同时将其Splits
"DimensionTransactionMonth=August"
投放到["DimensionTransactionMonth","August"]
中,我们将该数组中的最后一个值{{1} }
不,我们可以使用"August"
加入此IEnumnerable<string>
,如下所示:
string.Join(',' ...)
答案 1 :(得分:3)
因此,您正在处理kev值对,我会将您的输入转换为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"
答案 2 :(得分:1)
您需要执行3个步骤(如果您希望手动执行此操作)。
删除括号
var s = result.SubString(1, result.Length - 2);
拆分键值对
var pairs = s.Split(new[]{','});
通过拆分=
符号
var resultset = pairs.Select(x => x.Split(new[]{'='})[1]).ToList();
答案 3 :(得分:1)
var values = string.Join(",", result.Split(',').Select(o => o.Split(new[] { '=', '{', '}' })[1]));
答案 4 :(得分:1)
没有正则表达式(如果只有那两对):
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);;
答案 5 :(得分:0)
你可以使用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);