VB6判断字符串中是否包含汉字

对于google中和csdn中没有正确严谨的vb6判断字符串中是否包含汉字,要么简单的判断是否asc()返回值小于0(这样只能判断是否为双字节的字符串,比如韩文、日文、中文、阿拉伯文,无法确定为中文),难怪人家说我们vb6的都是初级新手用的。判断汉字的做法,都如此不严谨。
给出一个比较严谨的判断是否包含中文方法好了。希望日后有人搜索到,能够有帮助。
创建窗体,放一个按钮,默认名字,粘贴如下代码在代码页面。

Private Sub Command1_Click() Dim s1, s2, s3, s4 As String s1 = "中文" s2 = "ち" s3 = "English" s4 = "123" Dim result As String result = """" + s1 + """ " + IIf(IncludeChinese(s1), "包含汉字", "不包含汉字") result = result + vbCrLf + """" + s2 + """ " + IIf(IncludeChinese(s2), "包含汉字", "不包含汉字") result = result + vbCrLf + """" + s3 + """ " + IIf(IncludeChinese(s3), "包含汉字", "不包含汉字") result = result + vbCrLf + """" + s4 + """ " + IIf(IncludeChinese(s4), "包含汉字", "不包含汉字") MsgBox result End Sub '判断是否字符串中包含汉字 Public Function IncludeChinese(ByVal s As String) As Boolean '定义字节数组指向字符串 Dim data() As Byte data = s '临时变量,Integer长度为2,正好用来判断是否是汉字,因为汉字是双字节的 Dim t As Integer '定义循环变量 Dim i As Integer '汉字边界值 '因为直接写&H9FA5会认为成integer的负数,所以要写成字符串,进行转换 Dim lb, ub As Long lb = CLng("&H4E00") '汉字最小值 ub = CLng("&H9FA5") '循环判断,汉字的范围是4E00 ~ 9FA5 '因为我不太懂vb6的技巧写法,就用一个比较繁琐的写法做类型转换 For i = 0 To UBound(data) Step 2 t = CLng("&h" + Hex(data(i) + data(i + 1) * 255)) '连续的2个字节拼接为一个integer If t >= lb And t <= ub Then IncludeChinese = True '找到任何一个汉字则返回True Exit Function End If Next IncludeChinese = False '不包含汉字 End Function

输出结果:

"中文" 包含汉字
"ち" 不包含汉字
"English" 不包含汉字
"123" 不包含汉字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值