String.Contains返回False,当它为True时

时间:2013-02-05 20:39:13

标签: c# string httpwebrequest web-scraping contains

我需要这个解释,因为上帝的爱,我不知道什么是错的。 我正在通过c#,标准Httpwebrequest下载网页。 我得到完整的HTML代码并将其保存为字符串。 然后我将webbrowsers数据设置为它,当我点击元素时,我得到如下的Html:

<strong>Copyright 2011. All Rights Reserved.</strong>

当我得到我的脚本来比较为了存在这个确切的字符串而下载的页面集合时,我得到了错误但是如果我在RichTextBox中打开这个集合中的一个,那么开始比较其余的,它确实匹配。谁能告诉我为什么? 我已经尝试过调试和观看元素,没有任何东西是空的,甚至将值复制到记事本手动比较文本,我每次都得到一个匹配,所以最新发生了什么?编码?错误?我真的不知道。

我从http://web.archive.org/web/20110208042711/http://coralifeaqualight.com/

获得此示例

比较页面是网站上的所有本地页面。 这里的答案很受欢迎,看起来很简单,为什么不工作呢? 是的,我在检查时尝试将@放在一起。

3 个答案:

答案 0 :(得分:2)

最糟糕的情况是,您可以尝试在不使用Contains()的情况下获得相同的结果。这是一个例子。

string genericString = "My string";
bool contains = genericString.IndexOf("my", StringComparison.OrdinalIgnoreCase) >= 0;

答案 1 :(得分:2)

您可以检查是否存在以这种方式干扰匹配的隐藏字符:

using System.Text.RegularExpressions;

...

string output = Regex.Replace(input, "[^\u0021-\u007E]","");

如果它们在此之后匹配,那么你知道有些人物搞砸了你(换行,也许?)。

答案 2 :(得分:1)

我的猜测是,在编辑器中没有显示正在查看数据的字符。尝试将确切的数据复制到TextPad之类的内容中,看看字符串中是否有任何多余的字符。

这是我能做的最好的代码

相关问题