加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Active Record回调中验证日语字符

发布时间:2020-12-16 21:25:36 所属栏目:百科 来源:网络整理
导读:我有一个需要验证半宽和全宽日文字符的日文项目,半宽度允许14个字符,全宽度允许7个字符. 有没有人知道如何实现它? 现在我的模特 class Customer validates_length_of :name,:maximum = 14end 不是一个好选择 我目前正在使用ror 2.3.5 可以使用全宽和半宽 解
我有一个需要验证半宽和全宽日文字符的日文项目,半宽度允许14个字符,全宽度允许7个字符.

有没有人知道如何实现它?

现在我的模特

class Customer
   validates_length_of :name,:maximum => 14
end

不是一个好选择

我目前正在使用ror 2.3.5
可以使用全宽和半宽

解决方法

以下代码可能会让您超越线路,以满足您在最短时间内指定的确切要求.它使用 Moji gem( Japanese documentation),它在确定日语字符串的内容时提供了许多便利方法.

它在一个名称中最多只能识别14个字符,只包含半角字符,最多只能识别7个字符(包括包含半角和全角字符组合的名称,即存在一个完整字符)字符串中的-width字符将使整个字符串被视为“全宽”.

class Customer 

  validates_length_of :name,:maximum => 14,:if => Proc.new { |customer| half_width?(customer.name) }
  validates_length_of :name,:maximum => 7
    :unless => Proc.new { |customer| half_width?(customer.name) }

  def half_width?(string)
    Moji.type?(string,Moji::HAN_KATA)
  end

end

做出的假设:

>系统内的数据编码为UTF-8,并在数据库中存储;任何进一步必要的重新编码(例如将数据传递到遗留系统等)在另一个模块中完成.
>在将数据保存到数据库之前不会自动转换半到全角字符,即数据库中允许使用半角字符,原因可能是遗留系统集成,正确保存实际用户输入(!)和/或半角字符的美学价值(!)
>半角字符中的变音符号被视为它们自己的单独字符(即,为了确定字符串长度,不将カ和pars解析为一个字符)
>您指定的名称字段只有一个,而不是,例如,四个(姓氏,姓氏furigana,名称,名称为furigana),这在当今很常见.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读