gpt4 book ai didi

c# - 使用 ReadOnlySpan 处理转义序列

转载 作者:行者123 更新时间:2023-11-30 23:00:51 26 4
gpt4 key购买 nike

ReadOnlySpan<char>据说非常适合解析,所以我尝试使用它,但遇到了一个我不知道如何处理的用例。


我有一个命令行 string其中参数前缀 -和分隔符 (空格)被转义了(我知道我可以在这里引用它们但是为了这个问题让我们假设它不是一个选项):

 var str = @"foo -bar \-baz\ qux".AsMemory();

标记器应返回以下标记:

  1. foo - 命令名称
  2. bar - 参数名称
  3. -baz qux - 参数值

案例 1 & 2很简单,因为在这里我可以使用 str.Slice(i, length)但是我怎样才能创建 3rd大小写并只返回一个 ReadOnlySpan<char>Slice方法不允许我指定多个 start/length为了跳过转义字符 \ 所必需的范围.

例子:

str.Slice((10, 4), (15, 3)); 

哪里(10,4) = "-bar"(15,3) = " qux"

StringBuilder你可以跳过几个字符和Append其他人稍后。我如何使用 ReadOnlySpan<char> 获得相同的结果? ?

最佳答案

Span/ReadOnlySpan 是一个连续的内存块。它不能包含多个范围。这种设计是性能所必需的。 Span/ReadOnlySpan 应该和数组一样快。数组很快,因为它们是连续的内存块,没有进一步的抽象。

如果不分配新字符串,我看不出有什么方法可以做到这一点。您可以对所有连续的子字符串使用 Span/ReadOnlySpan,但您的解析问题似乎不适合使用 span 来存储结果。

关于c# - 使用 ReadOnlySpan<char> 处理转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51346366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com