2009-11-11 161 views
0

假設我有一個字符串,它看起來像以下:提取信息

string foo ="<add key="key1" Value="val1"/> 
    <add key="key2" Value="val2"/> 
    <add key="key3" Value="val3"/>" 

frrom這個字符串,我需要通過循環,讓每一個鍵值對,並做一些與他們。 我該怎麼做?

謝謝

回答

8

這實際上是XML嗎?如果是這樣,請使用XML解析器。如果它是一堆的元素,但沒有一個「根」元素,你也可以添加到開始和結束:

string xml = "<foo>" + foo + "</foo>"; 

,然後使用XML解析器。

編輯:好吧,如果它是XML,你應該肯定使用XML解析器。否則,你可以很容易地運行與編碼值等問題

+0

的字符串就是一個XML的一堆從中我只需要得到鍵和值。 – raklos 2009-11-11 14:54:04

+0

Jon使用xml解析器的權利要比試圖自行解決這個問題容易得多。使用它的開銷很小,好處很大。 – kemiller2002 2009-11-11 14:58:07

+0

你能說「XLINQ」嗎? – 2009-11-11 15:16:34

0

(1)第一刪除這些字符:<,/,>」 (2)上拆分‘=’

請注意,用下面的代碼,玩的循環值(指數超出範圍..等)

編輯:

private Dictionary[] ExtractValuePair(string PString) { 
    Of; 
    String; 
    String; 
    Dictionary _dc = new Dictionary(Of, String, String); 
    string[] _tmpStr; 
    PString = PString.Replace("<", "").Replace(">", "").Replace("/", "").Replace('"', "").Replace("add key", "").Replace("Value", ""); 
    _tmpStr = PString.Split("="); 
    int i; 
    for (i = 1; (i 
       <= (_tmpStr.Length - 2)); i++) { 
     _dc.Add(_tmpStr[i], _tmpStr[(i + 1)]); 
    } 
    return _dc; 
} 
+0

根據我的回答評論:嘗試''並且看看你得到了什麼結果。還有很多其他的破壞我可以給出的例子,但這是一個開始...... – 2009-11-11 16:12:51

+0

它可以制動的情況是:<,>,/,'add key','Value'尖括號可以解決,因爲XML編碼會使它們逃脫,將代碼更改爲不轉義將很容易。唯一的問題是:'/','添加鍵'和'值'。一點點的進一步編碼可以被克服 – Darknight 2009-11-11 16:59:45

+0

@Darknight:當XML解決方案實際上只有幾行時,聽起來像是非常多的工作。你還沒有發現以前的問題 - 你有多確信現在你已經找出了可能出錯的一切?爲了避免使用內置的XML庫,您願意花費多少時間才能使這一切正常工作?你從這些工作中獲得了什麼好處?也許你想要實現自己的字符串類以及下一個? – 2009-11-11 17:26:00