请教InStrRev函数

kaoa000 科员  2012-09-11 01:37:52
这个函数用来返回指定字符串中给定子串从右向左查找的第一个子串的位置,为什么汉字被当做一个字符处理呢,例如:
InStrRev(“啊提啊:123”,“:”)返回的是4,而不是7,
InStrRev(“啊提啊abc:123”,“:”)返回7而不是10
...全文
1451 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kaoa000 2013-01-10
这几天学习java,看到IO这里,有字节流和字符流之分,于是研究了一下字节和字符,对InStrRev()这个问题弄明白了,就像大家说的一样,这里是计算的字符数,一个字符按照不同的编码,在计算机中可能以一个或多个字节来表示,一个汉字是一个字符,按照GB2312编码,一个汉字用两个字节表示,按其他编码,可能用三个甚至更多字节表示,不管他在计算机存储中使用几个字节,按照字符来算,就是一个,全角a与半角a各自都是一个字符(字符是相对字符集来说的,全角a,半角a都是字符集中的一个字符),InStrRev()是处理字符的。
回复
kaoa000 2012-12-19
写的有点错误 InStrRev("啊提啊:123”,":"), 返回的是按字符来计算的,一个汉字,一个全角字符都算一个,一个半角字符也算一个,所以InStrRev("aaaabb啊:123”,":"), 返回8。 谢谢大家
回复
DawnPine 2012-09-13
你说的7是第7个字节
返回的4是第4个字符
回复
laoyebin 2012-09-12
从右向左
InStrRev(“啊提啊:123”,“:”)返回的是4

没错啊,不明白你怎么理解为7
回复
龙湖金风 2012-09-12
InStrRev返回一个字符串在另一个字符串中出现的位置,从字符串的末尾算起
并不是字节的位置
回复
傻X 2012-09-11
不区分":"和":"
是不是半角全角也有问题啊?
回复
赵4老师 2012-09-11
楼主难道
不区分":"和":"
不区分""和“”


?instrrev("中文B汉A字B汉A字","汉")
8
?instr("中文B汉A字B汉A字","汉")
4
?instrb(strconv("中文B汉A字B汉A字",vbFromUnicode),strconv("汉",vbFromUnicode ))
6
可惜没有instrrevb函数
回复
相关推荐
发帖
Microsoft Office应用
创建于2007-08-02

6158

社区成员

Microsoft Office应用
申请成为版主
帖子事件
创建了帖子
2012-09-11 01:37
社区公告
暂无公告