我有这个表达:
if (scheduleString.IndexOf("<br/>") == -1) return scheduleString;
我想检查字符串是否包含<br/>
。但是,在测试期间,其中一个测试字符串包含<br />
(br
和/
之间的额外空格)。有没有办法处理这两种情况和任何多余的情况(例如<br />
)?
答案 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*/>$"
。