扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
可以根据字符的ASCII编码来进行判断,ASCII的编码值为:0-127,可以把0-127以外的编码的字符作为汉字。
创新互联是一家专业提供泽普企业网站建设,专注与成都做网站、网站建设、外贸营销网站建设、H5网站设计、小程序制作等业务。10年已为泽普众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
Dim a As String
Dim S As Integer '保存汉字的开始位置
Dim E As Integer '保存汉字的结束位置
Dim i As Integer
Dim b As String
S = 0
E = 0
a = "4651让各位serg6546.,serg6546"
For i = 1 To Len(a)
If Asc(Mid(a, i, 1)) = 0 And Asc(Mid(a, i, 1)) = 127 Then
'这个是非汉字字符
If S = 0 Then
'还没有找到汉字的开始位置
'不做任何处理
Else
'已经找到汉字的开始位置
'那么现在这个是汉字的结束位置
'保存汉字的结束位置,然后结束循环
E = i - 1
Exit For
End If
Else
'这个是汉字字符
'如果还没有保存汉字开始位置,
'那么这个就是汉字的开始位置,保存下来
If S = 0 Then
S = i
End If
End If
Next i
'现在知道了S中是汉字的开始位置,
'E中是汉字的结束位置
'现在把原来的字符串分成三段,然后加上双引号
b = Left(a, S - 1) """" Mid(a, S, E - S + 1) """" Mid(a, E + 1)
'看看结果
MsgBox b
你可以用mid截取单个字符并用ASCII码判断:
n=asc(mid(str1,i,1))
if n0 and n255 then
'英文字母
else
'中文
end if
整个字符串你可以循环判断。
这是一个比较粗糙的范围,更加精准的判断:33-126为可打印的(即可显示的)英文字符,97-122为英文字母(小写),你可以根据字符串的实际内容来采用判断依据;负数是汉字(其实是最高位为1,VB识别为负数,转换成16进制就可以看到正确的编码了)
用循环加MID函数,取出每一个字符,看它的ASCII码,0的是汉字,0的是非汉字。
Function isLetter(letter As String) As String
If Asc(letter) 0 Then
’Ascii码小于0的为汉字区,但其中有的是全角字符而不完全是汉字,需要进一步区分
gbascii = AscB(StrConv(letter, vbFromUnicode))
'MsgBox gbascii
'区位码在16区之后的为汉字[16区以前的 是全角字符]
If gbascii - 160 15 Then
isLetter = "是汉字"
Else
isLetter = "是全角符号"
End If
Else
isLetter = "是半角英文或数字"
End If
End Function
.................张志晨:我想这个比较简单,符合你的意愿。
str = "hello,everybody. " 返回false,位置0。(不含汉字和汉语标点符号)
str = "hello,ererybody。 " 返回false,位置16。(最后一个句号是汉语标点符号)
先谢过大家了!
0ascii255
我来补充一下代码吧,在form中加入一个Text1
Private Sub Text1_Change()
If Text1.Text = "" Then Exit Sub '如果是空字符串,就退出此过程
Dim a
a = Asc(Mid(Text1.Text, Len(Text1.Text), 1))
If a 255 Or a 0 Then MsgBox "刚才输入的是汉字" Else MsgBox "刚输入的是字符"
End Sub
这是靠ASCII码来判断的,你根据你的程序需要进行修改吧,这是对输入框约束输入的比较常用的方法之一,你可以去搜索一下英文字符ASCII码表.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流