2015-11-02 59 views
-1

提取關鍵值對我需要解析的內容較長塊:C#從字符串

 
content block 1 
content block 2 key1="value1" key2="val2" some other content 
content block 3 key3="value3" other content 
more content 

我需要得到字典或任何結構,我可以通過(數組,集合等)循環。 到目前爲止,我在看兩個選項:正則表達式或某種拆分到數組中。

+0

你的問題是什麼? –

+0

對不起,問題是我如何提取對(key1,value1),(key2,value2),(key3,value3)? – shiraz

回答

0

嘗試此圖案:

(\w+)="(.+?)" 

然後在每個迭代匹配,並提取Group[1].Value(鍵),Group[2].Value(值)。

1

也許是這樣的:

string text = @" 
     content block 1 
     content block 2 key1=""value1"" key2=""val2"" some other content 
     content block 3 key3=""value3"" other content 
     more content 
    "; 
    var pattern = @"(?<key>\w+)\s*=\s*""(?<value>[^""]*)"""; 
    var matches = Regex.Matches(text, pattern); 

    var dictionary = new Dictionary<string, string>(); 

    foreach (Match match in matches) 
     dictionary.Add(match.Groups["key"].Value, match.Groups["value"].Value); 

您可能需要微調的格局。對於密鑰,它會抓取集合[A-Za-z0-9_]中的任何內容,然後是=符號。

該值是任何不是在=符號後面的引號內的"。但是,如果您的值字符串中有" s,則需要對其進行調整。

它還允許在=周圍的可選空間,但如果需要可以擰緊。

+0

這可能是最接近我正在尋找的東西,它向我證實我必須分兩步做,而不是一次性完成所有事情 – shiraz