首页 > 代码库 > 一个字符与字节混合对齐的问题解决方案 -- clwu
一个字符与字节混合对齐的问题解决方案 -- clwu
问题:项目中一个小工具,为了美观,引出一个需要把所有的 注释(c++ style)做列对齐(见方法三的图)
方法一:
$_strlen = strlen($string); // 对于有中文字符时,字数(字节数)偏大导致,列数要推前
方法二:
$_strlen = mb_strlen($string); // 对于有中文字符时,字数(字符数)偏小导致,列数要推后
方法三:
$_strlen = ( strlen($string) + mb_strlen($string) / 2 ); // hack:一个中文字符占用 2 列的显示宽度,但一个utf8中文是 3个字节,用mb_strlen=1,strlen=3,(1+3)/2 = 2(单位:字节,正好是一个中文字符的显示宽度(2列))
方法三只是比较好的解决了这个问题,这里只是利用了 中文字符strlen=3,(1+3)/2 = 2的算术技巧,对于一些 emoji字符,strlen=2,(1+2)/2 = 1.5就不能很好的解决了。
理解的关键概念:
1)字节
2)字符
3)显示列宽度
一个字符与字节混合对齐的问题解决方案 -- clwu
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。