VB內(nèi)部采用Unicode編碼,在這種編碼格式下,任何字符(包括半角的字母、數(shù)字、符號(hào)以及全角的漢字、符號(hào))都是占用兩個(gè)字節(jié)的。因此,Len("1111徐")的返回值是5,表示5個(gè)字符,而LenB("1111徐")的返回值是10,表示占用10個(gè)字節(jié)。
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、薩爾圖ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的薩爾圖網(wǎng)站制作公司
要想按ANSI編碼格式來獲取字符串的字節(jié)數(shù),必須這樣:
LenB(StrConv("1111徐", vbFromUnicode))
要注意哦,雖然返回值是6,但這個(gè)數(shù)與這個(gè)字符串在內(nèi)存中的實(shí)際占用字節(jié)數(shù)是不相符的哦!
VB使用Unicode編碼,任何字符(包括半角的字母、數(shù)字、符號(hào)及全角的漢字、符號(hào)等)都是占用兩個(gè)字節(jié)的。
Len()
函數(shù)返回字符串的字符個(gè)數(shù)(要注意,一個(gè)漢字也是算作一個(gè)字符的)
比如:
Len("百度baidu")的返回值為7
LenB()
函數(shù)返回字符串的占用字節(jié)數(shù)
比如:
LenB("百度baidu")的返回值為14
你是指判斷字符時(shí)全角還是半角嗎?
用asc函數(shù)可以判斷。
a是全角的,asc("a")是負(fù)值
a是半角的,asc("a")是正值
暈,“知道”自動(dòng)把全角字符轉(zhuǎn)換成半角了……
可以,用VB自帶函數(shù)就可以了半角轉(zhuǎn)全角:Text2.Text = StrConv(Text1.Text, )全角轉(zhuǎn)半角:Text2.Text = StrConv(Text1.Text,vbNarrow)當(dāng)然你可以做得智能一點(diǎn),譬如只允許輸入數(shù)字、符號(hào)和字母什么的。