【问题标题】:normalize the strings in Elixir/Phoenix规范化 Elixir/Phoenix 中的字符串
【发布时间】:2017-10-02 15:33:26
【问题描述】:

我想规范化用户通过<form> 发布的 Unicode(UTF-8) 字符串。是否有任何图书馆可以在 Elixir(或 Phoenix 或 Erlang)中处理这些东西?我习惯用 Python 做这件事,像下面这样,但我不知道 Elixir 有那些库。

import unicodedata
import zenhan
import jctconv

def normalize(strings, unistr = 'NFKC')
    norm = unicodedata.normalize(unistr, strings)
    zenhan = zenhan.z2h(norm, mode=2)
    katahira = jctconv.kata2hira(zenhan)

    return katahira

【问题讨论】:

  • 顺便说一句,我终于自己写了这个库。 hex.pm/packages/japanese_zenhan
  • 您对库的特别要求(在半角和全角日文字符之间进行转换)似乎与您的问题所暗示的并不完全相同,即规范化 UTF-8 字符广义的。下面的答案适用于广泛的问题。

标签: elixir phoenix-framework


【解决方案1】:

从 Elixir 1.2 开始有一个 String.normalize/2 函数。我不确定那些 python 库在做什么,但是这个函数可能是你想要实现的一个好的开始。

【讨论】:

    【解决方案2】:

    如果您在iex 中输入h String.normalize,您将获得正确的信息和一些示例。

    Converts all characters in binary to Unicode normalization form 
    identified by
    form.
    
    Forms
    
    The supported forms are:
    
      • :nfd - Normalization Form Canonical Decomposition. Characters are
        decomposed by canonical equivalence, and multiple combining characters are
        arranged in a specific order.
      • :nfc - Normalization Form Canonical Composition. Characters are
        decomposed and then recomposed by canonical equivalence.
    
    Examples
    
    ┃ iex> String.normalize("yêṩ", :nfd)
    ┃ "yêṩ"
    ┃
    ┃ iex> String.normalize("leña", :nfc)
    ┃ "leña"
    

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 2014-05-10
      • 2018-09-29
      • 2020-02-12
      • 2012-04-25
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      相关资源
      最近更新 更多