问题描述
我发现在某些情况下string.IndexOf()在搜索双换行符\ r \ n \ r \ n时返回-1,后跟0xCC(204)字节序列(也可能是其他字符串,避风港)未选中)。以下是dotnetfiddle示例-可以在此处选择编译器。在netcore31编译器上,始终在其他编译器上找到该字符串,只有在不跟随0xCC序列时才可以找到该字符串。有人可以解释吗?
https://dotnetfiddle.net/ZMW7tL
编辑:当我在最后一个\ r \ n之后放置0xCB或0xCD时,也会发生同样的情况。
小提琴的源代码:
using System;
public class Program
{
public static void Main()
{
var x = new byte[] { 99,108,111,115,101,13,10,204,159,67,4 };
var z = System.Text.Encoding.UTF8.GetString(x);
Console.WriteLine(z);
Console.WriteLine();
var idx = z.IndexOf("\r\n\r\n");
Console.WriteLine("index = " + idx);
Console.WriteLine("=========================");
var x1 = new byte[] { 99,5,4 };
var z1 = System.Text.Encoding.UTF8.GetString(x1);
Console.WriteLine(z1);
Console.WriteLine();
var idx1 = z1.IndexOf("\r\n\r\n");
Console.WriteLine("index modified = " + idx1);
Console.WriteLine("=========================");
var x2 = new byte[] { 13,159 };
var z2 = System.Text.Encoding.UTF8.GetString(x2);
Console.WriteLine(z2);
Console.WriteLine();
var idx2 = z2.IndexOf("\r\n\r\n");
Console.WriteLine("index short = " + idx2);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)