查看: 2977|回复: 8

[已经解决] 请问用什么指令获取文本占用字节数?

[复制链接]
梦石
0
星屑
3242
在线时间
205 小时
注册时间
2019-9-16
回帖
195
发表于 2019-10-29 03:43:14 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
比如a="名字2",用a.length或者a.size指令,都会得到3这个结果。
可是我想得到5这个结果,一个汉字占2个字节,一个数字占1个字节。
请问这个应该用什么命令?
梦石
0
星屑
14720
在线时间
2175 小时
注册时间
2016-9-20
回帖
777
发表于 2019-10-29 09:48:35 | 显示全部楼层
先在百度找到这个人答的
https://zhidao.baidu.com/question/141524395.html
在noob网找到H是16進制字节轉換,*是匹配任意東西的意思??
https://www.runoob.com/ruby/ruby-array.html

str = "名字2"
#str.split(//).each {|e|; print (e.unpack('H*').to_s + "\n")}
p ((str.unpack('H*').to_s).size-4)/2
本來没有減4除2, 因為2个數字代表1字节就除2,本來开头和結尾的"\和\"都占用4个字节所以減4, 然后得出"名字2"占用3*2汉字字节,和1字节, 共計7个字节

点评

OK谢谢,我看看。复杂点也没办法,谁叫编程语言都是外国人主导的呢,他们又不用汉字,不封装这个。  发表于 2019-10-29 13:01
贴子只供参考我贴子内容有很多只是我自己标识的内容代指不是原来意思,偏向发贴当时的想法(后来回看贴发现有很多错误,会造成误导 ),如果想靠谱点应 找相关正确的文章   -- 2025/4/19
回复

使用道具 举报

梦石
1
星屑
23236
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2019-10-29 14:05:59 | 显示全部楼层
正则表达式 [\u4E00-\u9FFF] 匹配所有中文字符替换成00,然后.length
回复

使用道具 举报

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
回帖
705

R考场第七期纪念奖

发表于 2019-10-29 15:32:28 | 显示全部楼层
XP的ruby应该会直接返回字节数吧
更高级的版本用 str.bytesize 就行了

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 我很赞同

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3242
在线时间
205 小时
注册时间
2019-9-16
回帖
195
 楼主| 发表于 2019-10-29 17:48:41 | 显示全部楼层
SixRC 发表于 2019-10-29 15:32
XP的ruby应该会直接返回字节数吧
更高级的版本用 str.bytesize 就行了

可是我现在用的XP不知道为什么,能用这个指令,但是结果却不太多。
比如a="名字2"返回的结果是7,那我就固定-2,本以为行,可是还是有差别啊……问题出在哪里呢?
比如a="名字是21",返回的结果竟然是11……固定-2的方法行不通啊

点评

晕,原来是这样!那我没问题了,第二个结果为什么等于11我也明白了,多谢了。  发表于 2019-11-2 11:08
unicode的汉字是两字节 可是utf-8编码的是三字节  发表于 2019-10-29 18:08
本来就是7啊 你以为一个汉字是2字节其实是3字节...7就是对的答案  发表于 2019-10-29 18:06
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部