查找Elixir中的代码点是否为大写

cjm*_*cjm 6 elixir

我需要检测一下代码点是否是Elixir中的大写字母.我已经尝试检查它的值是否在范围内65..90但是在非拉丁大写字母上失败.我也试过检查是否

String.upcase(cp) == cp

但是这对非字母(即数字,标点符号)失败了.

我真的不想通过整个unicode并创建一个大写代码点列表,是否有内置函数?

Dog*_*ert 16

您可以使用\p{Lu}Unicode字符属性regex转义序列来匹配任何大写字母:

iex(1)> "a" =~ ~r/^\p{Lu}$/u
false
iex(2)> "A" =~ ~r/^\p{Lu}$/u
true
iex(3)> "?" =~ ~r/^\p{Lu}$/u
false
iex(4)> "?" =~ ~r/^\p{Lu}$/u
true
iex(5)> "!" =~ ~r/^\p{Lu}$/u
false
Run Code Online (Sandbox Code Playgroud)

确保通过u标志打开正则表达式中的Unicode匹配.

您可以在页面上找到有关受支持属性的更多信息.在页面上搜索标题"Unicode字符属性".