gpt4 book ai didi

string - 如何在 Erlang 中将重音字符串转换为常规字符串?

转载 作者:行者123 更新时间:2023-12-04 14:05:26 27 4
gpt4 key购买 nike

我想将一些带有重音字符的城市名称转换为普通字符串。例如:

<<"Sosúa">>  to  <<"Sosua">>

<<"Luperón">> to <<"Luperon">>

关于如何做到这一点的任何线索?

最佳答案

  1. 申请Unicode Canonical Decomposition (NFD)在两个代码点 o (U+6F) 中重写 ó 等字符,后跟分隔的重音符号 (U+301) 和 unicode:characters_to_nfc_binary/1
  2. 使用正则表达式 \p{Mn},替换 ( re:replace/4 ) 所有组合变音符号(非间距标记),如上面的 U+301
  3. 可选:应用 Unicode 规范组合 (NFC) 将剩余和可能的代码点重新组合在一起
String = "Luperón",
{ok, Re} = re:compile("\\p{Mn}", [unicode]),
Output = unicode:characters_to_nfc_binary(
re:replace(
unicode:characters_to_nfd_binary(String),
Re,
"",
[global]
)
),
Output.

Elixir 的等价物,供引用和引用(因为它也基于 Erlang 的 unicode 模块):

string = "Luperón"
output =
Regex.replace(~R<\p{Mn}>u, string |> :unicode.characters_to_nfd_binary(), "")
|> :unicode.characters_to_nfc_binary()

关于string - 如何在 Erlang 中将重音字符串转换为常规字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68722624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com