如何将 C# 字符串转换为 Span<char>? (跨度<T>)

Posted

技术标签:

【中文标题】如何将 C# 字符串转换为 Span<char>? (跨度<T>)【英文标题】:How do I convert a C# string to a Span<char>? (Span<T>) 【发布时间】:2018-04-29 12:45:40 【问题描述】:

如何将字符串转换为 Span

Span<char> mySpan = "My sample source string";

【问题讨论】:

【参考方案1】:

Span&lt;T&gt; 和朋友都包含在 .NET Core 2.1 中,因此无需安装额外的 NuGet 包。

Dan Sorensen's answer 在那个日期是正确的并且基于预览,但现在它已经过时了。 对于字符串,扩展方法是AsSpanAsMemory,分别返回ReadOnlySpan&lt;char&gt;ReadOnlyMemory&lt;char&gt;

显式AsReadOnlySpan 消失了,因为strings 是不可变的,所以取回Span&lt;char&gt;(可写)是没有意义的。

【讨论】:

感谢您的回答。正在直接搜索AsReadOnlySpan,但即使AsSpan 返回ReadOnlySpan 也没有出现,doh。【参考方案2】:

您需要安装System.Memory NuGet package。

字符串的扩展方法称为 .AsSpan() 或 .AsReadOnlySpan() 可将字符串转换为适当的 Span

例子:

Span<char> mySpan = "My sample source string".AsSpan();
ReadOnlySpan<char> myReadOnlySpan = "My read only string".AsReadOnlySpan();

来源:MSDN Channel 9 "C# 7.2: Understanding Span"(大约 6 分钟)

更新:这个答案当时是正确的,但基于预览版。有关当前程序,请参阅updated answer on this page by gfoidl。

【讨论】:

正确的做法是归属为您提供该链接的 SO 用户。 Hans:你指的是MSDN源码链接吗?我自己找到了那个。我将其添加到我的答案中,以提醒我在哪里听到了解决方案。 另一位大牛添加了NuGet包链接。谢谢丹尼尔! Daniel:我希望我能给你这个答案的功劳。你说得对,这一步至关重要。

以上是关于如何将 C# 字符串转换为 Span<char>? (跨度<T>)的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 字符串转换为 C# IEnumerable<JToken>

C#:将字符列表转换为字符串

将 ul li 转换为字符串列表 c#

将 HTML 字符串转换为 DOM 元素?

将 vector<char> 作为参数,然后转换为字符串

如何将 C# 循环中的 html 编辑文本转换为页面上的完全格式化文本