| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1990 人关注过本帖, 3 人收藏
标题:怎样查看是单字节还是双字节
只看楼主 加入收藏
ptyy803
Rank: 2
来 自:上海
等 级:论坛游民
威 望:2
帖 子:193
专家分:64
注 册:2009-6-11
结帖率:100%
收藏(3)
已结贴  问题点数:20 回复次数:10 
怎样查看是单字节还是双字节
在一行字符中怎样查看第10个字符是双字节还是单字节
例:ditdf世界的124FH汉字DJ矛盾12DCcv
搜索更多相关主题的帖子: 汉字 矛盾 
2013-07-13 14:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26913
注 册:2012-2-5
收藏
得分:20 
A=[12345,6789中]
?ISLEADBYTE(SUBSTR(A,10,1))
返回值:.F. 单字节,.T. 双字节

坚守VFP最后的阵地
2013-07-13 18:23
ptyy803
Rank: 2
来 自:上海
等 级:论坛游民
威 望:2
帖 子:193
专家分:64
注 册:2009-6-11
收藏
得分:0 
还得问2楼的高手
a='ditdd世界的汉字124FH汉字DJ矛盾12DCcv '
在A字符串中第6、7、8、9、10、11、12、13、14、15都是双字节,我要截取字符串,截取两段,从一个整汉字开始截取,怎样截取法。谢谢
2013-07-14 12:01
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26913
注 册:2012-2-5
收藏
得分:0 
程序代码:
CSTR="我想將一BC個字123456符串分割G成兩行"
MESSAGEBOX(FUN(CSTR),64,[系统信息])
*--- 自定义函数
FUNCTION FUN
PARAMETERS CSTR
LOCAL NLEN
NLEN=LEN(CSTR)/2
CSTR_1=LEFT(CSTR,NLEN)
NLEN=IIF(STRCONV(STRCONV(CSTR_1,5),6)==CSTR_1,NLEN,NLEN+1)
RETURN LEFT(CSTR,NLEN)+CHR(10)+CHR(13)+CHR(10)+SUBSTR(CSTR,NLEN+1)

坚守VFP最后的阵地
2013-07-14 18:52
ptyy803
Rank: 2
来 自:上海
等 级:论坛游民
威 望:2
帖 子:193
专家分:64
注 册:2009-6-11
收藏
得分:0 
还得请教:aa='卢沟桥事变(1937年中日战争爆发)',我要的是从aa字符串中截取前21个字符,bb1=subs(aa,1,21),后面的字符开始为bb2=subs(aa,22),如果aa='卢沟桥1事变(1937年中日战争爆发)',我就的截取前22个字符,既bb1=subs(aa,1,22),bb2=subs(aa,23),这样的截取方法应该使用什么样的函数。谢谢!
2013-07-14 21:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26913
注 册:2012-2-5
收藏
得分:0 
以下是引用ptyy803在2013-7-14 21:00:23的发言:

还得请教:aa='卢沟桥事变(1937年中日战争爆发)',我要的是从aa字符串中截取前21个字符,bb1=subs(aa,1,21),后面的字符开始为bb2=subs(aa,22),如果aa='卢沟桥1事变(1937年中日战争爆发)',我就的截取前22个字符,既bb1=subs(aa,1,22),bb2=subs(aa,23),这样的截取方法应该使用什么样的函数。谢谢!
自己写个自定义函数,根据具体情况,写出不同的函数
建议最好用SUBSTRC()

[ 本帖最后由 sdta 于 2013-7-14 21:24 编辑 ]

坚守VFP最后的阵地
2013-07-14 21:18
ptyy803
Rank: 2
来 自:上海
等 级:论坛游民
威 望:2
帖 子:193
专家分:64
注 册:2009-6-11
收藏
得分:0 
解决了,还得谢谢6楼师傅的启发。我用的是选前30个字符进行逐一鉴定单字节的个数,如果单字节个数为奇数就用SUBSTRC()函数加一个字节截取,如是偶数就直接截取30个字符,这样就解决了我想要的最终答案。再次谢谢6楼的师傅。


[ 本帖最后由 ptyy803 于 2013-7-14 22:09 编辑 ]
2013-07-14 22:08
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26913
注 册:2012-2-5
收藏
得分:0 
程序代码:
aa='卢沟桥事变(1937年中1日战争爆发)'
M=18
A=SUBSTR(AA,1,M)
N=IIF(ASC(RIGHTC(A,1))>255 OR ASC(RIGHTC(A,1))<=127,0,1)
* 说明:ASC(RIGHTC(A,1))>255  最后一个字符,是一个完整的双字节字符
*       ASC(RIGHTC(A,1))<=127 最后一个字符,是一个完整的单字节字符
*       ASC()返回值在 >127<=255 之间,说明是一个双字节字符的左半边
*       根据ASC()的返回值,判断最后一个字符是否为双字节;双字节 N=1,单字节 N=0
A=SUBSTR(AA,1,M+N) && 字节调整后获取的字符串
?A

坚守VFP最后的阵地
2013-07-15 15:14
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26913
注 册:2012-2-5
收藏
得分:0 
程序代码:
CLEAR
AA='卢沟桥事变(1937年中1日战争爆发)'
?ZH(AA,16)
?ZH(AA,17)
?ZH(AA,18)
?ZH(AA,19)
?ZH(AA,20)
* 自定义函数
FUNCTION ZH
PARAMETERS CSTR,M
N=IIF(BETWEEN(ASC(RIGHTC(SUBSTR(CSTR,1,M),1)),128,255),1,0)
RETURN SUBSTR(CSTR,1,M+N)

坚守VFP最后的阵地
2013-07-15 16:03
ptyy803
Rank: 2
来 自:上海
等 级:论坛游民
威 望:2
帖 子:193
专家分:64
注 册:2009-6-11
收藏
得分:0 
虽然解决啦,但还是谢谢你的提示,你的这些代码使我很有学习价值,再次谢谢你。
2013-07-15 21:22
快速回复:怎样查看是单字节还是双字节
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016532 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved