vb中,如何判断一个字符串是汉字还是英文?

sslijun 2003-11-11 02:15:43
vb中,如何判断一个字符串是汉字还是英文?
例如:string1=‘abc' 或者 '文件名’ 或者 '文ab件abc名’
如何判断string1是汉字还是英文?如何将 '文ab件abc名’这种混合字符串中英文字母与汉字分离开?

thanks...
...全文
2045 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
planetike 2003-11-12
  • 打赏
  • 举报
回复
可以自己定义一个函数来取字符串长度

Public Function Lench(ByVal TmpStr As String) As String
Lench = LenB(StrConv(TmpStr, vbFromUnicode))
End Function

if Lench(字符串)=len(字符串) then
msgbox "英文字符串"
else
msgbox "含有中文的字符串"
end if
Goldbach 2003-11-12
  • 打赏
  • 举报
回复
一个汉字是由两个字节组成,其中每个字节的最高位为1
softlead 2003-11-11
  • 打赏
  • 举报
回复
asc() 如果小于0是汉字
大于零 能显示的是英文字符 数字等
DerryZhang 2003-11-11
  • 打赏
  • 举报
回复
关注.......
rainstormmaster 2003-11-11
  • 打赏
  • 举报
回复
VB里的字符串是以Unicode编码存储的,每个字符,不论中文还是西文,都占一个“Unicode字符”的宽度,即两个字节的宽度。具体来说,英文字符以是其ASCII值作为低字节,0作为高字节;而中文字符则是从GB2312编码转换到Unicode里相应的值。Len()函数计算的是字符串的“字符”数,而不是“字节”数。
kujiaku 2003-11-11
  • 打赏
  • 举报
回复
给之前古林的
以下是我在debug窗口里面的结果
b = "a"
?lenb(b)
2
?len(b)
1
?fncChineseChk("a")
True

lenb跟len到底是什么区别?同样是半角字符,为何会是两倍关系?
sword281 2003-11-11
  • 打赏
  • 举报
回复
而英文字符的最高位为0
sword281 2003-11-11
  • 打赏
  • 举报
回复
一个汉字是由两个字节组成,其中每个字节的最高位为1
wangjunsong 2003-11-11
  • 打赏
  • 举报
回复
ascii小于0就是汉字,是规则吗?
bubu198 2003-11-11
  • 打赏
  • 举报
回复
否有中英文字符的判断

function fncChineseChk(strIn as sting) as boolean
if LenB(strIn) > Len(strIn) then
fncChineseChk = True
else
fncChineseChk = False
endif
end function
yoki 2003-11-11
  • 打赏
  • 举报
回复
只好用循环 每一位判断
zjcxc 2003-11-11
  • 打赏
  • 举报
回复
能想到的办法也只有循环判断了.
rainstormmaster 2003-11-11
  • 打赏
  • 举报
回复
分割中英文的原理和上面相似,简单的示例:
dim s as string
s="abc中国vass"
dim i as long
dim chs as string
chs=""
dim ens as string
ens=""
dim temps as string
for i=1 to len(s)
temps=mid(s,i,1)
if asc(temps)<0 then
chs=chs+temps
else
ens=ens+temps
end if
next
debug.print "中文:"+chs
debug.print "英文:"+ens

wangdegang 2003-11-11
  • 打赏
  • 举报
回复
很难,vb使用的是uncode,我想只好用循环 每一位判断了
rainstormmaster 2003-11-11
  • 打赏
  • 举报
回复
问题提得不严谨,应该是如何判断字串中是否有中英文字符吧?

先用mid函数逐一取出各个字符,然后用asc函数取得字符的ascii值,一般简单的认为字符的ascii值小于0,就为中文。

简单的示例:
dim s as string
s="abc中国vass"
dim i as long
dim temps as string
for i=1 to len(s)
temps=mid(s,i,1)
if asc(temps)<0 then
debug.print "第"+cstr(i)+"个字符为中文"
else
debug.print "第"+cstr(i)+"个字符为英文"
end if
next

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧