當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。