如何从ReadOnlySequence解析UTF8字符串?
ReadOnlySequence是由多个部分组成的,由于UTF8字符的长度可变,因此在部分中断时可能正好断在某个字符的中间。 因此,仅仅在这些部分上使用Encoding.UTF8.GetString()并将其组合到StringBuilder中将不起作用。
是否可能在不先将其组合成数组的情况下从ReadOnlySequence解析UTF8字符串?我希望避免内存分配。
ReadOnlySequence是由多个部分组成的,由于UTF8字符的长度可变,因此在部分中断时可能正好断在某个字符的中间。 因此,仅仅在这些部分上使用Encoding.UTF8.GetString()并将其组合到StringBuilder中将不起作用。
是否可能在不先将其组合成数组的情况下从ReadOnlySequence解析UTF8字符串?我希望避免内存分配。
var originalString = Encoding.UTF8.GetString([ReadOnlySequence].ToArray());
或者对于C# < 7.2
,可以这样写:var seq = [ReadOnlySequence].GetPosition(0); var sOK = [ReadOnlySequence].TryGet(ref seq, out ReadOnlyMemory<byte> bytes); string originalString = Encoding.UTF8.GetString(bytes.ToArray());
。 - Jimi