2012-08-14 96 views
2

我有以下形式的字符串:字符串解析C#創建段?

"company=ABCorp, location=New York, revenue=10million, type=informationTechnology" 

我希望能夠走出解析這個字符串並獲得「姓名」,「價值」,在

公司= ABCCorp

的形式對

location =紐約等

這可能是任何合適的數據結構存儲。我想也許是Dictionary<string, string>(),但我很樂意提供建議。

有沒有一種合適的方式在C#中做到這一點?

編輯:我在這裏的最終目標是有這樣的事情:

數組[公司] = ABCCorp。 Array [location] =紐約。

我們可以用什麼數據結構來實現上述目標?我的第一個想法是一個字典,但我不知道我是否缺少任何東西。

謝謝

+1

可以拖動這些值與正則表達式。 – Dmitriy 2012-08-14 18:04:21

+1

一種方法是在','上分割,然後在結果數組中循環並在'='上分割。也可能有更奇特的方式。 – Tim 2012-08-14 18:06:27

+0

逗號後總會有空格嗎? – Brian 2012-08-14 18:06:36

回答

4

使用String.SplitToDictionary,你可以這樣做:

var original = "company=ABCorp, location=New York, revenue=10million, type=informationTechnology"; 

var split = original.Split(',').Select(s => s.Trim().Split('=')); 

Dictionary<string,string> results = split.ToDictionary(s => s[0], s => s[1]); 
1

我假設一個弱RegEx/LINQ背景,所以這裏有一個沒有任何「特殊」的方法。

string text = "company=ABCorp, location=New York, revenue=10million, type=informationTechnology"; 

string[] pairs = text.Split(','); 
Dictionary<string, string> dictData = new Dictionary<string, string>(); 

foreach (string currPair in pairs) 
{ 
    string[] data = currPair.Trim().Split('='); 

    dictData.Add(data[0], data[1]); 
} 

這具有逗號(,)和等號(=)在比作爲分隔符以外的數據從不存在的要求。

這很大程度上依賴於String.Split

+1

假設逗號總是存在,我認爲這種方法優於Regex。我們無法真正回答字符串格式是否可以與其他分隔符一起使用,或者需要防範哪些內容。 – peacedog 2012-08-14 18:11:44

3
string s = "company=ABCorp, location=New York, revenue=10million, type=informationTechnology"; 
var pairs = s.Split(',') 
     .Select(x => x.Split('=')) 
     .ToDictionary(x => x[0], x => x[1]); 

pairs是具有鍵值對的字典。唯一的警告是你可能想要處理逗號和字符串之間的任何空格。

+0

謝謝!這工作 – user1202434 2012-08-14 18:33:43