0

我有一个 html 内容。我正在使用 HtmlAgilityPack 解析内容。我需要用' align =“center”
'替换属性 ' align =“middle” ',我正在使用函数

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

但是,如果条件即使对于**valign = "middle"**!

如果条件不是,我需要输入Contains()什么?

4

4 回答 4

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();
于 2013-08-30T10:39:20.240 回答
2

目前还不清楚您要达到的目标。String.Contains检查给定字符串是否包含在另一个(可能更大的)字符串中,因此它是否是子字符串。

也许您想知道它们是否相同,然后使用Equalsor ==

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);

最后,不区分大小写的包含等效的 using IndexOf

bool containsIgnoreCase = string1.IndexOf(string2, StringComparison.CurrentCultureIgnoreCase) >= 0;
于 2013-08-30T10:20:30.407 回答
2

如果你的字符串像 "blablabla align = 'align = \"middle\" blablabla" 那么你可以这样做:

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

但是别人怎么说很难理解你到底想要什么。

于 2013-08-30T10:29:00.707 回答
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则返回,否则返回从下一个字符开始搜索匹配。

于 2013-08-30T10:23:54.330 回答