如何判断 字符串中的 中外文 字母 如英文字母 a~z α β 等

chinawcs 石家庄市纵横网络技术有限公司 技术经理  2008-04-10 10:02:47
英文字母好 判断 但是 α、 β 等字母 怎么判断

字符串"好123β射线三" 操作后 变为 "好射线三" 只留汉字


谢谢
...全文
149 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
vbman2003 2008-04-11
这个贴要收藏学习一下
回复
cbm6666 2008-04-11
Dim aa$, bb$, i&
Private Sub Command1_Click()
aa = "好123β射线三": bb = ""
For i = 1 To Len(aa)
If Hex(Asc(Mid(aa, i, 1))) >= "B0A1" And Hex(Asc(Mid(aa, i, 1))) <= "F7FE" Then bb = bb & Mid(aa, i, 1)
Next i
MsgBox bb
End Sub
回复
cbm6666 2008-04-11
汉字区间 16区 01位-94位 ---- 87 区 01位-94位

汉字 10进制区间 45217-63486 MsgBox Chr(49653) 等於 刘

汉字 16进制区间 B0A1-F7FE MsgBox Chr(&HC1F5) 等於 刘

由上面可看到汉字的16进制区间,在B0A1-F7FE之间, 但是在其间含有几个不是中文字的特殊字符, 因此必需再转为10进制才能排除这些特殊字符, 3F 代码改为以16进制方式比较, 但我不喜欢这种方法,因为可能会碰上误判.

Dim aa$, bb$, i&
Private Sub Command1_Click()
aa = "好123β射线三": bb = ""
For i = 1 To Len(aa)
bb = IIf(Hex(Asc(Mid(aa, i, 1))) >= "B0A1" And Hex(Asc(Mid(aa, i, 1))) <= "F7FE", bb & Mid(aa, i, 1), bb)
Next i
MsgBox bb
End Sub
回复
guyehanxinlei 2008-04-11
学习了
回复
rgmcel 2008-04-11
基本思路就是判断ASCII是否大于128,如果大于128就把该ASCII的前8位(即第一个字节)高移8位,也就是乘以2的8次方,再加上后一个字节,最后用CHR显示出来。不过,3楼的范围是 汉字区间10进制 45217--63486
而四楼的是 大于"B000" 即45056,而结果都对,这是为什么?
回复
cbm6666 2008-04-10
'添加 Command1

Dim aa$, bb$, HexVal$, Rtn&, i&
Private Sub Command1_Click()
aa = "好123β射线三": bb = ""
For i = 1 To Len(aa)
HexVal = Hex(Asc(Mid(aa, i, 1)))
Rtn = Val("&H" + Mid(HexVal, 1, 2)) * 256 + Val("&H" + Mid(HexVal, 3, 2))
If Rtn >= 45217 And Rtn <= 63486 Then bb = bb & Mid(aa, i, 1)
Next i
MsgBox bb
End Sub

'汉字区间10进制 45217--63486

【汉字与16进制转换】
http://hi.baidu.com/cbm666/blog/item/96d84a909e020b8ca977a4b8.html

【CBM666 的汉字列表】
http://hi.baidu.com/cbm666/blog/item/b2cffdfa04fe33dfb58f31ee.html

【CBM666 的汉字与10进制转换】
http://hi.baidu.com/cbm666/blog/item/f21d51dae1266dd8b7fd48ad.html

【CBM666 的中文汉字区位与1016进制转换】
http://hi.baidu.com/cbm666/blog/item/65342e731336e71f8601b0db.html



回复
shakoe 2008-04-10
就是说留下汉字?,看以下例子


Private Sub Command1_Click()
Dim vI As Integer
Dim vStr As String
Dim vChar As String

vStr = "@#1a你好啊。12"

For vI = 1 To Len(vStr)
vChar = Mid(vStr, vI, 1)
If Asc(vChar) >= Asc("阿") And Asc(vChar) <= Asc("最") Then
Print vChar; "是汉字。"
End If
Next vI

End Sub
回复
chinawcs 2008-04-10
αβ 是 汉字嘛 ?
回复
chinawcs 2008-04-10
楼上的可以

谢谢大家
回复
chinawcs 2008-04-10
楼上的可以

谢谢大家
回复
of123 2008-04-10
Dim strSource As String, i As Integer, strTmp As String, strResult As String

strSource = "好123β射线三"
For i = 1 To Len(strSource)
strTmp = Mid(strSource, i, 1)
If Hex(Asc(strTmp)) > "B000" Then strResult = strResult & strTmp
Next i

MsgBox strResult
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7489

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2008-04-10 10:02
社区公告
暂无公告