2013-08-22 94 views
-4

我已經看到很多類似於這個東西的解決方案,但我還沒有找到一個解決方案,但對我很有用。HTML標籤之間的文本

我已經有一個字符串的源代碼。我只需要從整個頁面源中獲取一個值。我已經習慣了像「123」這樣的字符串,但如果我使用了我的pageSource,它什麼都不返回。 (是的,沒有什麼錯誤的代碼返回的源代碼,我把它打印到文本框就好了)

因此,例如,我的源代碼是<div id="test" value="thisisatest">,我想返回thisisatest。另外,如果有人知道如何做到這一點,如果他們也可以提供一種將多個值打印到列表框中的方法,那就好了。

編輯:我發現我用什麼沒有工作。

public string GetSubstringByString(string a, string b, string c) 
{ 
    return c.Substring((c.IndexOf(a) + a.Length), (c.IndexOf(b) - c.IndexOf(a) - a.Length)); 
} 

使用(工作):

string result = GetSubstringByString("1", "3", "123"); 
MessageBox.Show(result); 

我怎麼需要它的工作:

string result = GetSubstringByString("1", "3", source); 
MessageBox.Show(result); 
+0

請發表您的代碼。鏈接到您找到的解決方案並告訴我們爲什麼他們不適合您,這也會很有幫助。否則,我們只有足夠的信息來說明使用HTML Agility Pack。 – TheEvilPenguin

+0

我刪除了我現有的代碼,否則我會發布它。如果我發現我再次使用了什麼,我會發布它。 –

+0

更新了..... –

回答

1

的問題是, '<' 的第一個標記之前也會出現。您需要修復代碼以查找第一個第一個實例的第一個實例。試試這個:

public string GetSubstringByString(string before, string after, string txt) 
{ 
    int bPos = txt.IndexOf(before); 
    int aPos = txt.IndexOf(after,aPos); 
    return txt.Substring((bPos + before.Length), (aPos - txt.IndexOf(before) - before.Length)); 
} 
+0

謝謝!完美的工作。現在如果有多個值需要到列表框中去,那該怎麼辦? –

+0

並且改變參數名稱!代碼應該是自我記錄的,所以像a,b,c這樣的名字是可怕的 –

+0

要讀取多個值,在「之後」之後尋找「之前」字符串,然後把它放在一個循環中,我相信你可以自己弄清楚它 – redtuna