设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2459|回复: 8
打印 上一主题 下一主题

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3082
在线时间
205 小时
注册时间
2019-9-16
帖子
224
跳转到指定楼层
1
发表于 2019-10-29 03:43:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
比如a="名字2",用a.length或者a.size指令,都会得到3这个结果。
可是我想得到5这个结果,一个汉字占2个字节,一个数字占1个字节。
请问这个应该用什么命令?

Lv4.逐梦者

梦石
0
星屑
14048
在线时间
2070 小时
注册时间
2016-9-20
帖子
844
2
发表于 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
内容仅供参考,
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20950
在线时间
9333 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

3
发表于 2019-10-29 14:05:59 | 只看该作者
正则表达式 [\u4E00-\u9FFF] 匹配所有中文字符替换成00,然后.length
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

4
发表于 2019-10-29 15:32:28 | 只看该作者
XP的ruby应该会直接返回字节数吧
更高级的版本用 str.bytesize 就行了

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3082
在线时间
205 小时
注册时间
2019-9-16
帖子
224
5
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-26 21:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表