请问如何判断一个文本框中输入的都为汉字?

onlyphoenix 2005-11-06 02:27:48
rt
...全文
238 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnnaBear 2006-04-04
  • 打赏
  • 举报
回复
rainstormmaster(暴风雨 v2.0)//
想请问下如果text里是"laj我"这样的话为什么判断不出来有中文?
请教
^_^
northwolves 2005-11-06
  • 打赏
  • 举报
回复
在汉字的区位码中,高两位为区号,低两位为位号。 在区位码中,01-09区为682个特殊字符,16~87区为汉字区,包含6763个汉字 。其中16-55区为一级汉字(3755个最常用的汉字,按拼音字母的次序排列),56-87区为二级汉字(3008个汉字,按部首次序排列).所以,如果想判断是否所有的输入均为一级或二级汉字,可以利用区位码进行判断前两位是否在16-87 之间

附:

汉字与区位码转换代码:

Function quwei(ByVal x As String) As String '获得某汉字或字符对应的的区位码
If Asc(x) >= 0 Then Exit Function
x = Hex(Asc(x))
quwei = Format(CDec("&H" & Left(x, 2)) - 160, "00") & Format(CDec("&H" & Right(x, 2)) - 160, "00")
End Function


Function hanzi(ByVal x As String) As String'获得某区位码对应汉字或字符
hanzi = Chr("&H" & Hex(Val(Left(x, 2)) + 160) & Hex(Val(Right(x, 2)) + 160))
End Function
faysky2 2005-11-06
  • 打赏
  • 举报
回复
确实不好判断
rainstormmaster 2005-11-06
  • 打赏
  • 举报
回复
这个不好判断,因为不止汉字,其它许多国家的文字也都是unicode编码,近似的可以用len lenb 结合strconv进行判断:
Private Sub Command1_Click()
Dim i As Long, j As Long
i = Len(Text1.Text)
j = LenB(StrConv(Text1.Text, vbFromUnicode))
If j = 2 * i Then
MsgBox "输入的都是unicode编码的文字,包括汉字、日文、韩文等"
End If
End Sub

7,763

社区成员

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

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