2014-01-22 128 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])); 
相關問題