使用字符串匹配精确的字符串.c#中的Contains()方法
本文关键字:字符串 Contains 中的 方法 字符 串匹配 | 更新日期: 2023-09-27 18:29:41
我有一个html内容。我正在使用HtmlAgilityPack分析内容。我需要替换属性
'align="middle"'与'align="center"',我使用功能
if(htmlDoc.DocumentNode.OuterHttml.Contains("align = "middle""))
htmlDoc.DocumentNode.OuterHttml.Replace("align = "middle","align = "center"")
但如果条件返回true,即使对于**valign = "middle"**
!
如果条件不是Contains()
,我需要放什么?
是的,我正试图在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();
您想要实现的目标并不明确。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;
如果您的字符串类似于"blablabla align='align=''"middle ''"blablabla",那么您可以执行:
Contains(" align = '"middle'" ") // spaces before and after
但是别人怎么说很难理解你到底想要什么。
您可以尝试以下操作:
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,否则返回搜索下一个字符中的匹配项。
如果您想从字符串列表中找到完全匹配的字符串
if ( keywords.Find(str => str == keyword) != null )