String.Contains(x)== True但String.IndexOf(x)== -1?

时间:2014-01-07 20:11:08

标签: c# .net character-encoding

我在解析日志文件时遇到了一些恶意请求,发现这种情况我抛出异常,因为我尝试通过将所有内容提取到“?”来提取URL的非查询字符串部分。如果存在:

string s = @"/adServer/adSer�1X���L) [���0�:�^�?ް�9� �a�d�t��h� I����PA� �1 �G���$�";
string ch = "?";
bool b = s.Contains(ch);
int i = s.IndexOf(ch);

但在这种情况下,它包含一个“?”,但是当我尝试.Substring(0, IndexOf("?"))时,我得到了一个异常,因为IndexOf为-1。这怎么可能?

这是实际字符串,以防它无法正确呈现:

enter image description here

因此,当此代码运行时,b == True,但i == -1

如果我将代码更改为char ch = '?'而不是string ch = "?",则可以按预期工作。

0 个答案:

没有答案