任何单个UTF-8字符上的模式匹配

lpi*_*pil 6 binary utf-8 elixir pattern-matching

我想有一个匹配任何单个UTF-8字符的函数子句.

我可以匹配这样的特定字符

def foo("a") do
  "It's an a"
end
Run Code Online (Sandbox Code Playgroud)

但我无法确定是否可以对任何单个UTF8字符执行相同操作.

我目前的解决方案是将字符串拆分为字符列表并进行模式匹配,但我很好奇是否可以跳过该步骤.

bit*_*ker 8

你可以这样做:

def char?(<<c::utf8>>), do: true
def char?(_), do: false
Run Code Online (Sandbox Code Playgroud)

请注意,这仅匹配具有单个字符的二进制文件,以匹配字符串中的下一个字符,您可以这样做:

def char?(<<c::utf8, _rest::binary>>), do: true
Run Code Online (Sandbox Code Playgroud)