如何检查字符串是否包含break HTML标记?

时间:2014-06-25 15:45:32

标签: c# html

我有这个表达:

if (scheduleString.IndexOf("<br/>") == -1) return scheduleString;

我想检查字符串是否包含<br/>。但是,在测试期间,其中一个测试字符串包含<br />br/之间的额外空格)。有没有办法处理这两种情况和任何多余的情况(例如<br />)?

2 个答案:

答案 0 :(得分:2)

使用string.replace()删除空格,然后进行检查。

if (scheduleString.Replace(" ", "").IndexOf("<br/>", StringComparison.OrdinalIgnoreCase) == -1) return scheduleString;

string.Replace()方法返回一个副本(字符串是不可变的,所有这些),所以不用担心它会影响原始字符串。

如果您检查很多字符串,这可能不是最快的。我添加了StringComparison.OrdinalIgnoreCase以避免任何案例问题 - html是小写但你永远不知道的好习惯。

答案 1 :(得分:1)

通常情况下,我建议您不要尝试使用正则表达式解析HTML。有一些库,例如用于解析HTML的HtmlAgilityPack及其所有奇怪的规则。

也就是说,这是一个足够简单的例子,正则表达式就足够了。

if (!Regex.IsMatch(scheduleString, @"<br\s*/>")) return scheduleString;

这将匹配<br后跟任意数量的空格(包括0),然后是/>。因为我们没有使用锚点(^用于字符串的开头,$用于字符串的结尾),如果该字符串在scheduleString内的任何位置,这将匹配,无论其他地方是什么。如果您想匹配 <br/>标记,则可以使用@"^<br\s*/>$"