2013-08-30 100 views
0

我有一個html內容。我正在使用HtmlAgilityPack解析內容。 我需要 'ALIGN = 「中心」' 來替換屬性
'ALIGN = 「中間」',我使用的功能在c中使用string.Contains()方法匹配確切的字符串#

if(htmlDoc.DocumentNode.OuterHttml.Contains("align = "middle"")) 
htmlDoc.DocumentNode.OuterHttml.Replace("align = "middle","align = "center"") 

但是,如果條件是即使是**valign = "middle"**返回true!

如果條件不是Contains(),我需要輸入什麼?

+0

包含至少一個情況爲滿足手段...如果你想確切的使用等於() – Zaki

+2

你是什麼樣的輸入? valigh =更大的字符串的中間部分,還是完整的字符串? – Ehsan

+0

我認爲你沒有把問題定義得足夠好,任何人都可以給出答案 - 例如,'xyz align ='middle'abc'是否匹配? –

回答

4

是的我試圖找到HTML內容中的匹配。

然後使用HtmlAgilityPack。你的代碼會是這樣的。

var doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(HtmlString); 

var tds = doc.DocumentNode.SelectNodes("//td[@align='middle']"); 

或像這樣使用LINQ

var tds = doc.DocumentNode.Descendants("td") 
       .Where(td => td.Attributes["align"].Value == "middle") 
       .ToList(); 
+2

終於!謝謝 :) – Raghavendra

2

這並不是你想要達到的目標。 String.Contains檢查給定的字符串是否包含在另一個(可能較大)字符串中包含,因此如果它是子字符串。

也許你想知道,如果他們是一樣的,然後使用Equals==

bool same = string1 == string2; 

,或者你想知道它是否與給定的字符串開始,然後使用StartsWith

bool startsWith = string1.StartsWith(string2); 

或者你想忽略的情況(.NET區分大小寫):

bool equalsIgnoreCase = string1.Equals(string2, StringComparison.CurrentCultureIgnoreCase); 

的具有相同StartsWith

bool startsWithIgnoreCase = string1.StartsWith(string2, StringComparison.CurrentCultureIgnoreCase); 

終於不區分大小寫含有相當於使用IndexOf

bool containsIgnoreCase = string1.IndexOf(string2, StringComparison.CurrentCultureIgnoreCase) >= 0; 
+0

我正在檢查給定的字符串是否包含在另一個(可能更大)的字符串中,並與完全匹配! – Raghavendra

+0

你是對的,那就是你在做什麼,並且你正在從中獲得預期的結果 - 但是你想要做什麼?如果您試圖解析HTML,那麼解決您的問題的正確方法是使用HTML解析器,而不是字符串函數。 –

0

你可以嘗試這樣的:

string str = "valign = \"middle\""; 
string search = "align = \"middle\""; 

int ix; 

while ((ix = str.IndexOf(search, ix)) != -1) 
{ 
    if (ix == 0 || !char.IsLetterOrDigit(str[ix - 1])) 
    { 
     break; 
    } 

    ix++; 
} 

bool success = ix != -1; 

這將工作即使valign = "middle";align = "middle"

它檢查比賽開始之前的字母是否爲非IsLetterOrDigit(如果存在)。如果是,則爲break s,否則返回搜索下一個字符的匹配項。

2

,如果你的字符串是像「blablabla ALIGN =「ALIGN = \‘中\’blablabla」,那麼你可以這樣做:

Contains(" align = \"middle\" ") // spaces before and after 

但別人怎麼說,這是很難理解你想要什麼。