2014-01-22 95 views
3

我有一个像下面的字符串值:获取以逗号分隔字符串从键值对值

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

我需要改造象下面这样:

var finalResult = "August,2012"; 

有谁知道该怎么办它?

+0

阅读有关.NET中的正则表达式。 –

+2

或者JSON序列化/反序列化 – Dimitri

+0

这是一个Json字符串吗?您可以将其反序列化为.NET对象 – Amicable

回答

3

因此,你面对的千电子伏 - 值对,我想你的输入转换为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" 
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(); 
+0

非常明确的答案:) +1 –

+0

这一个也正确。谢谢。 – Tun

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); 
1
var values = string.Join(",", result.Split(',').Select(o => o.Split(new[] { '=', '{', '}' })[1])); 
+1

'resultSplit'?你有没有试过编译它? –

+0

@TimSchmelter,谢谢,我在格式化过程中弄坏了它。 – Backs

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

这里是一个衬垫上,这样我可以看看聪明的,它不依赖于键值对的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])); 
相关问题