假設我有一個字符串,它看起來像以下:提取信息
string foo ="<add key="key1" Value="val1"/>
<add key="key2" Value="val2"/>
<add key="key3" Value="val3"/>"
frrom這個字符串,我需要通過循環,讓每一個鍵值對,並做一些與他們。 我該怎麼做?
謝謝
假設我有一個字符串,它看起來像以下:提取信息
string foo ="<add key="key1" Value="val1"/>
<add key="key2" Value="val2"/>
<add key="key3" Value="val3"/>"
frrom這個字符串,我需要通過循環,讓每一個鍵值對,並做一些與他們。 我該怎麼做?
謝謝
這實際上是XML嗎?如果是這樣,請使用XML解析器。如果它是一堆的元素,但沒有一個「根」元素,你也可以添加到開始和結束:
string xml = "<foo>" + foo + "</foo>";
,然後使用XML解析器。
編輯:好吧,如果它是XML,你應該肯定使用XML解析器。否則,你可以很容易地運行與編碼值等問題
(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;
}
根據我的回答評論:嘗試'
它可以制動的情況是:<,>,/,'add key','Value'尖括號可以解決,因爲XML編碼會使它們逃脫,將代碼更改爲不轉義將很容易。唯一的問題是:'/','添加鍵'和'值'。一點點的進一步編碼可以被克服 – Darknight 2009-11-11 16:59:45
@Darknight:當XML解決方案實際上只有幾行時,聽起來像是非常多的工作。你還沒有發現以前的問題 - 你有多確信現在你已經找出了可能出錯的一切?爲了避免使用內置的XML庫,您願意花費多少時間才能使這一切正常工作?你從這些工作中獲得了什麼好處?也許你想要實現自己的字符串類以及下一個? – 2009-11-11 17:26:00
的字符串就是一個XML的一堆從中我只需要得到鍵和值。 – raklos 2009-11-11 14:54:04
Jon使用xml解析器的權利要比試圖自行解決這個問題容易得多。使用它的開銷很小,好處很大。 – kemiller2002 2009-11-11 14:58:07
你能說「XLINQ」嗎? – 2009-11-11 15:16:34