Project1

标题: 请问用什么指令获取文本占用字节数? [打印本页]

作者: 寒凌天    时间: 2019-10-29 03:43
标题: 请问用什么指令获取文本占用字节数?
比如a="名字2",用a.length或者a.size指令,都会得到3这个结果。
可是我想得到5这个结果,一个汉字占2个字节,一个数字占1个字节。
请问这个应该用什么命令?
作者: ppspssss    时间: 2019-10-29 09:48
先在百度找到这个人答的
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个字节
作者: 喵呜喵5    时间: 2019-10-29 14:05
正则表达式 [\u4E00-\u9FFF] 匹配所有中文字符替换成00,然后.length
作者: SixRC    时间: 2019-10-29 15:32
XP的ruby应该会直接返回字节数吧
更高级的版本用 str.bytesize 就行了
作者: 寒凌天    时间: 2019-10-29 17:48
SixRC 发表于 2019-10-29 15:32
XP的ruby应该会直接返回字节数吧
更高级的版本用 str.bytesize 就行了

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




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1