你可以用mid截取单个字符并用ASCII码判断:
创新互联公司长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为沭阳企业提供专业的网站设计、网站制作,沭阳网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
n=asc(mid(str1,i,1))
if n0 and n255 then
'英文字母
else
'中文
end if
整个字符串你可以循环判断。
这是一个比较粗糙的范围,更加精准的判断:33-126为可打印的(即可显示的)英文字符,97-122为英文字母(小写),你可以根据字符串的实际内容来采用判断依据;负数是汉字(其实是最高位为1,VB识别为负数,转换成16进制就可以看到正确的编码了)
这就要调用API函数了
给你代码吧
记得给点分啊
Private
Const
KeysM
=
H8000
Private
Declare
Function
GetAsyncKeyState
Lib
"user32"
(ByVal
vKey
As
Long)
As
Integer
Private
Sub
TextBox1_KeyDown(ByVal
sender
As
Object,
ByVal
e
As
System.Windows.Forms.KeyEventArgs)
Handles
TextBox1.KeyDown
Me.Text
=
e.KeyValue
If
e.KeyValue
=
Keys.ShiftKey
And
GetAsyncKeyState(160)
And
KeysM
Then
MsgBox("你按的是左SHIFT")
ElseIf
e.KeyValue
=
Keys.ShiftKey
And
GetAsyncKeyState(161)
And
KeysM
Then
MsgBox("你按的是右SHIFT")
End
If
End
Sub
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码表.
str = "hello,everybody. " 返回false,位置0。(不含汉字和汉语标点符号)
str = "hello,ererybody。 " 返回false,位置16。(最后一个句号是汉语标点符号)
先谢过大家了!
遍历每一个字符,看是全角还是半角的。半角的字符总数 +1,全角的字符总数 +2。
参考:
Public Function GetByteLength(ByVal value As String) As Long
Dim i As Long = 0
For Each c As Char In value
If (c.ToString().Length = System.Text.Encoding.Default.GetByteCount(value.ToString())) Then
i = i + 1
End If
i = i + 1
Next
Return i
End Function