asp截取指定英漢混合字符串_支持中文
更新時(shí)間:2008年10月11日 09:48:28 作者:
本函數(shù)作用是截取指定英漢混合字符串,并保持顯示長(zhǎng)度一至。就是將一個(gè)漢字當(dāng)兩英文來(lái)截取。
說(shuō)明:本函數(shù)作用是截取指定英漢混合字符串,并保持顯示長(zhǎng)度一至。就是將一個(gè)漢字當(dāng)兩英文來(lái)截取。
用途:一般會(huì)用在標(biāo)題顯示列表,可以避免截取的字符串參插不齊的現(xiàn)象。
程序代碼
'//A_strString要處理的字符串
'//A_intLen以英文字符數(shù)為準(zhǔn)
'//A_strAddString如果A_strString有截取字符時(shí)添中的后綴,如:...,可以為空
function CutString(byval A_strString,byval A_intLen,byval A_strAddString)
dim MM_objRe,MM_objMs,MM_objMh
dim MM_strCut,MM_intLen
set MM_objRe=new RegExp
MM_objRe.Global=true'全局搜索
MM_objRe.IgnoreCase=true'不區(qū)分大小寫
MM_objRe.Pattern="[^\x00-\xff]"
MM_intLen=A_intLen
if len(A_strString)<=A_intLen then
MM_strCut=A_strString
else
MM_strCut=left(A_strString,MM_intLen)
set MM_objMs=MM_objRe.execute(MM_strCut)
if MM_objMs.count<>MM_intLen then
for each MM_objMh in MM_objMs
if MM_objMh.FirstIndex<MM_intLen then
MM_intLen=MM_intLen-1
else
exit for
end if
next
else
MM_intLen=MM_intLen/2
end if
MM_strCut=left(A_strString,MM_intLen) & A_strAddString
end if
CutString=MM_strCut
set MM_objRe=nothing
end function
這個(gè)和目前網(wǎng)上流行的不太一樣,用的是正則式來(lái)獲取非ANSI字符(這里默認(rèn)非ANSI字符為漢字,如果有偏差可以修改正則式來(lái)達(dá)到目的)。先注明一點(diǎn):函數(shù)指定長(zhǎng)度以英文字符數(shù)為準(zhǔn)。即是指定為10,含義為10個(gè)英文或5個(gè)漢字
作了兩點(diǎn)優(yōu)化:
第一點(diǎn):直接獲取指定長(zhǎng)度的字符,因?yàn)椴还苁侨珴h字還是全英文,最長(zhǎng)不過(guò)是全英文長(zhǎng)度,超過(guò)的字符是絕對(duì)淘汰字符。
第二點(diǎn):使用正則尋找范圍內(nèi)的漢字,并只遍歷每個(gè)漢字的字?jǐn)?shù),這樣可以最大程度上減少循環(huán)次數(shù)。
用途:一般會(huì)用在標(biāo)題顯示列表,可以避免截取的字符串參插不齊的現(xiàn)象。
程序代碼
復(fù)制代碼 代碼如下:
'//A_strString要處理的字符串
'//A_intLen以英文字符數(shù)為準(zhǔn)
'//A_strAddString如果A_strString有截取字符時(shí)添中的后綴,如:...,可以為空
function CutString(byval A_strString,byval A_intLen,byval A_strAddString)
dim MM_objRe,MM_objMs,MM_objMh
dim MM_strCut,MM_intLen
set MM_objRe=new RegExp
MM_objRe.Global=true'全局搜索
MM_objRe.IgnoreCase=true'不區(qū)分大小寫
MM_objRe.Pattern="[^\x00-\xff]"
MM_intLen=A_intLen
if len(A_strString)<=A_intLen then
MM_strCut=A_strString
else
MM_strCut=left(A_strString,MM_intLen)
set MM_objMs=MM_objRe.execute(MM_strCut)
if MM_objMs.count<>MM_intLen then
for each MM_objMh in MM_objMs
if MM_objMh.FirstIndex<MM_intLen then
MM_intLen=MM_intLen-1
else
exit for
end if
next
else
MM_intLen=MM_intLen/2
end if
MM_strCut=left(A_strString,MM_intLen) & A_strAddString
end if
CutString=MM_strCut
set MM_objRe=nothing
end function
這個(gè)和目前網(wǎng)上流行的不太一樣,用的是正則式來(lái)獲取非ANSI字符(這里默認(rèn)非ANSI字符為漢字,如果有偏差可以修改正則式來(lái)達(dá)到目的)。先注明一點(diǎn):函數(shù)指定長(zhǎng)度以英文字符數(shù)為準(zhǔn)。即是指定為10,含義為10個(gè)英文或5個(gè)漢字
作了兩點(diǎn)優(yōu)化:
第一點(diǎn):直接獲取指定長(zhǎng)度的字符,因?yàn)椴还苁侨珴h字還是全英文,最長(zhǎng)不過(guò)是全英文長(zhǎng)度,超過(guò)的字符是絕對(duì)淘汰字符。
第二點(diǎn):使用正則尋找范圍內(nèi)的漢字,并只遍歷每個(gè)漢字的字?jǐn)?shù),這樣可以最大程度上減少循環(huán)次數(shù)。
相關(guān)文章
ASP頁(yè)面隨機(jī)添加字符實(shí)現(xiàn)防復(fù)制的代碼
ASP頁(yè)面隨機(jī)添加字符實(shí)現(xiàn)防復(fù)制的代碼...2007-08-08ASP基礎(chǔ)入門第十篇(ASP內(nèi)建對(duì)象Server)
這篇文章主要介紹了ASP內(nèi)建對(duì)象Server的相關(guān)資料,需要的朋友可以參考下2015-10-10Server.Execute方法執(zhí)行指定的ASP程序
Server.Execute方法執(zhí)行指定的ASP程序...2007-09-09asp中獲取當(dāng)前月份距離以前某個(gè)時(shí)間的月份數(shù)
獲取當(dāng)前月份距離以前某個(gè)時(shí)間的月份數(shù),asp都是用DateDiff函數(shù)來(lái)實(shí)現(xiàn)2012-04-04非常不錯(cuò)的ASP+Access數(shù)據(jù)庫(kù)的終極安全大法18則
非常不錯(cuò)的ASP+Access數(shù)據(jù)庫(kù)的終極安全大法18則...2007-06-06