我试图查看一个大字符串是否包含这行HTML:
<label ng-class="choiceCaptionClass" class="ng-binding choice-caption">Was this information helpful?</label>
正如您所看到的,此代码段在多个位置都有引号,当我执行以下操作时会引起问题:
Assert.IsTrue(responseContent.Contains("<label ng-class="choiceCaptionClass" class="ng - binding choice - caption">Was this information helpful?</label>"));
我尝试过这两种定义字符串的方法:
@"<label ng-class=""choiceCaptionClass"" class=""ng - binding choice - caption"">Was this information helpful?</label>"
和
"<label ng-class=\"choiceCaptionClass\" class=\"ng - binding choice - caption\">Was this information helpful?</label>"
但是在每种情况下,Contains()方法都会使用双引号或反斜杠查找文字字符串。有没有其他方法可以定义此字符串,以便我可以正确搜索它?
答案 0 :(得分:2)
使用反斜杠转义双引号是正确的做法。
您的搜索失败的原因是字符串实际上并不匹配。例如,在带有反斜杠的版本中,某些破折号周围有空格,但HTML字符串没有。
答案 1 :(得分:1)
尝试使用正则表达式。我为你制作了这个,但你可以测试你自己的正则表达式here。
var regex = new Regex(@"<label\s+ng-class\s*=\s*""choiceCaptionClass""\s+class\s*=\s*""ng-binding choice-caption""\s*>\s*Was this information helpful\?\s*</label>", RegexOptions.IgnoreCase);
Assert.IsTrue(regex.IsMatch(responseContent));
如果这不起作用,请使用测试工具弄清楚模式的哪个部分正在起作用。
希望这有帮助!