登录 立即注册
安币:

重庆时时彩反倍投技巧|ThinkSNS+ 是如何计算字符显示长度的【研发日记五】 [复制链接]

2018-3-13 14:23
ThinkSNS 阅读:37 评论:0 赞:0
本文来源:http://www.oneupabq.com/a/www.jshb.gov.cn/

重庆时时彩独胆倍投 www.oneupabq.com,  该文件最重要的内容是员工持股试点国企的条件:(1)主业处于充分竞争行业和领域的商业类企业,即国企分类中的商业一类,包括商贸等服务业、交运仓储、建筑建材、机械、TMT、医药、农业、汽车等消费品;(2)股权机构合理的混改国企,排除国有独资企业;(3)公司治理结构健全,排除未改制国企;(4)营业收入和利润90%以上来源于所在企业集团外部市场,排除集团关联企业;(5)央企三级以下企业和省属二级国企。上市公司建议关注巨星科技、康力电梯、慈星股份、机器人、科大讯飞(广发计算机覆盖)等。

今天我们来聊一下可能很多人都会头疼的东西:显示长度。

需求是这样的,在字符的显示上,两个英文单词才占一个中文或者其他语言的显示长度。如下:

图1.png

上面排的是两个英文字母,一个汉字,一个Emoji。你会发现,在显示上占的宽度是一致的。一些设计上为了好看也要求有这样的处理。

例如,我们的用户名需求是最多12个非单字节字符或者24个单字节字符的需求也可以混合排的需求,我们写后端不得不处理这样的验证了。

需求规则是  /^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/

在ThinkSNS+中,为了能把这部分验证公用,所以选择使用自定义验证规则。我们先说下计算的实现思路吧!

首先,就算是mb_strlen也没法准确的获取多字节字符和单子节字符混合在一起的长度,网上有个说法,汉字占三个字节,英文数组半角符号占一个字节,所以:

图2.png

用这个方法可以得到单字节占0.5多字节占1的计算。但是以中文为例,只有两万个汉字才是这种情况,还有六万多汉字是四个,其次,emoji也是四个字节。根本无法准确的计算。

好在在无意间发现一个奇怪的东西str_word_count 这个函数计算非英文单词外是除了符号例如中文就是按照汉字个数算的,emoji也是同理。

发现这个以后,咱们就好办了。我们吧用户名中的 [a-aA-Z0-9_] 剔除掉,单独计算不就是我们要的验证长度了吗?

所以,首先我们用:

图3.png

方式单独计算出单字节字符的显示长度,再用:

图4.png

方式计算出多字节的长度,最后:

图5.png

就得出了显示长度,实现了,最后封装成验证规则:

图6.png

代码是原型代码,还没有进行优化,之后我们只要按照下面的方式用:

图7.png

现在就很好的解决了这个需求。

我们很乐意,将基于 Laravel 的 ThinkSNS+ 产品开发中的技术解决方案分享给大家,也希望喜欢的朋友能给国内开源产品一点点的支持

开源代码仓库:GitHub:https://github.com/slimkit/thinksns-plus

分享到:
我来说两句
facelist
您需要登录后才可以评论 登录 | 立即注册
所有评论(0)

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区

重庆时时彩独胆倍投广告投放| 下载客户端|申请友链|手机版|站点统计|重庆时时彩独胆倍投 ( 粤ICP备15117877号 )

返回顶部
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
小说 小说 小说 小说 小说 小说
幸运飞艇开奖直播-上必发网 北京赛车平台 免费幸运飞艇计划 北京赛车pk10翻倍 北京赛车机器人
北京赛车代理怎么做 pk10关于5码的一些技巧 幸运飞艇5码公式 重庆幸运农场软件 幸运飞艇开奖走势图