当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir String.next_codepoint用法及代码示例


Elixir语言中 String.next_codepoint 相关用法介绍如下。

用法:

next_codepoint(arg)
@spec next_codepoint(t()) :: {codepoint(), t()} | nil

返回字符串中的下一个代码点。

结果是一个元组,其中包含代码点和字符串的其余部分或nil,以防字符串到达末尾。

String 模块中的其他函数一样, next_codepoint/1 适用于无效 UTF-8 的二进制文件。如果字符串以在 UTF-8 编码中无效的字节序列开头,则返回的元组的第一个元素是具有第一个字节的二进制文件。

例子

iex> String.next_codepoint("olá")
{"o", "lá"}

iex> invalid = "\x80\x80OK" # first two bytes are invalid in UTF-8
iex> {_, rest} = String.next_codepoint(invalid)
{<<128>>, <<128, 79, 75>>}
iex> String.next_codepoint(rest)
{<<128>>, "OK"}

与二进制模式匹配的比较

二进制模式匹配提供了一种类似的方式来分解字符串:

iex> <<codepoint::utf8, rest::binary>> = "Elixir"
"Elixir"
iex> codepoint
69
iex> rest
"lixir"

虽然不完全等效,因为codepoint 是一个整数,并且该模式不会匹配无效的 UTF-8。

但是,二进制模式匹配更简单、更有效,因此请选择更适合您的用例的选项。

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 String.next_codepoint(arg)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。