重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
你可以用mid截取單個字符并用ASCII碼判斷:
創(chuàng)新互聯(lián)公司長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為沭陽企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、網(wǎng)站制作,沭陽網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
n=asc(mid(str1,i,1))
if n0 and n255 then
'英文字母
else
'中文
end if
整個字符串你可以循環(huán)判斷。
這是一個比較粗糙的范圍,更加精準(zhǔn)的判斷:33-126為可打印的(即可顯示的)英文字符,97-122為英文字母(小寫),你可以根據(jù)字符串的實際內(nèi)容來采用判斷依據(jù);負(fù)數(shù)是漢字(其實是最高位為1,VB識別為負(fù)數(shù),轉(zhuǎn)換成16進制就可以看到正確的編碼了)
這就要調(diào)用API函數(shù)了
給你代碼吧
記得給點分啊
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碼來判斷的,你根據(jù)你的程序需要進行修改吧,這是對輸入框約束輸入的比較常用的方法之一,你可以去搜索一下英文字符ASCII碼表.
str = "hello,everybody. " 返回false,位置0。(不含漢字和漢語標(biāo)點符號)
str = "hello,ererybody。 " 返回false,位置16。(最后一個句號是漢語標(biāo)點符號)
先謝過大家了!
遍歷每一個字符,看是全角還是半角的。半角的字符總數(shù) +1,全角的字符總數(shù) +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