elixir - 验证多种语言的长度
问题描述
我正在开发一个多语言应用程序,它允许用户输入多种语言(例如,英语、中文和韩语)
对于注册用户,我具有validate_length
验证用户名和姓的长度的功能。
但是,我遇到的问题是我不希望计算英文字母和中文字母的结果相同。例如,如果我计算“大卫”和“器防雷器”的长度。即使汉字占用更多空间,它们都返回 5。
Ecto 目前支持按codepoints
and计算长度,graphemes
但它们中的任何一个都可以满足我的需要。
我怎样才能做到这一点?甚至可以计算字母并验证它需要多少“字节”?
解决方案
您可以使用Kernel.byte_size/1
:
iex(13)> byte_size("David")
5
iex(14)> byte_size("器防雷器防")
15
推荐阅读
- vue.js - Webpack + Vue Storefront:dist .js 文件包含多个“\n//\n”
- mysql - 从 table1 中选择一个日期,然后计算有多少结果 WHERE payment='cash' AND date=table1.date AS cash 并再次为 'credit'
- javascript - 如何在 TS 和 TypeORM 中创建泛型函数?
- python-3.x - Pycharm 上的芹菜
- excel - 为什么我不能设置工作簿变量,如果它已经打开 vba
- r - 在 R / ggplot2 的条形图上重新排序 x 轴级别并更改 y 轴的比例
- python - 如果该键本身有两个以上的值,如何添加同一个键的两个值?
- javascript - 如果未返回 JSON 项之一,如何显示错误消息。只是想说“我们找不到您的订单号”
- react-native - 为什么我调用一次时会打印无限值?
- c++ - 使用模数运算符以相反的顺序环绕