asp截取指定英漢混合字符串_支持中文
更新時間:2008年10月11日 09:48:28 作者:
本函數(shù)作用是截取指定英漢混合字符串,并保持顯示長度一至。就是將一個漢字當兩英文來截取。
說明:本函數(shù)作用是截取指定英漢混合字符串,并保持顯示長度一至。就是將一個漢字當兩英文來截取。
用途:一般會用在標題顯示列表,可以避免截取的字符串參插不齊的現(xiàn)象。
程序代碼
'//A_strString要處理的字符串
'//A_intLen以英文字符數(shù)為準
'//A_strAddString如果A_strString有截取字符時添中的后綴,如:...,可以為空
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
這個和目前網(wǎng)上流行的不太一樣,用的是正則式來獲取非ANSI字符(這里默認非ANSI字符為漢字,如果有偏差可以修改正則式來達到目的)。先注明一點:函數(shù)指定長度以英文字符數(shù)為準。即是指定為10,含義為10個英文或5個漢字
作了兩點優(yōu)化:
第一點:直接獲取指定長度的字符,因為不管是全漢字還是全英文,最長不過是全英文長度,超過的字符是絕對淘汰字符。
第二點:使用正則尋找范圍內(nèi)的漢字,并只遍歷每個漢字的字數(shù),這樣可以最大程度上減少循環(huán)次數(shù)。
用途:一般會用在標題顯示列表,可以避免截取的字符串參插不齊的現(xiàn)象。
程序代碼
復制代碼 代碼如下:
'//A_strString要處理的字符串
'//A_intLen以英文字符數(shù)為準
'//A_strAddString如果A_strString有截取字符時添中的后綴,如:...,可以為空
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
這個和目前網(wǎng)上流行的不太一樣,用的是正則式來獲取非ANSI字符(這里默認非ANSI字符為漢字,如果有偏差可以修改正則式來達到目的)。先注明一點:函數(shù)指定長度以英文字符數(shù)為準。即是指定為10,含義為10個英文或5個漢字
作了兩點優(yōu)化:
第一點:直接獲取指定長度的字符,因為不管是全漢字還是全英文,最長不過是全英文長度,超過的字符是絕對淘汰字符。
第二點:使用正則尋找范圍內(nèi)的漢字,并只遍歷每個漢字的字數(shù),這樣可以最大程度上減少循環(huán)次數(shù)。
相關文章
使用ODBC數(shù)據(jù)庫管理Serv-U的FTP用戶及相關ASP編程[附源碼示例下載]
使用ODBC數(shù)據(jù)庫管理Serv-U的FTP用戶及相關ASP編程[附源碼示例下載]...2007-11-11
解決 JScript 中使用日期類型數(shù)據(jù)時出現(xiàn)類型錯誤的問題
在服務端JScript中,有些時候需要使用日期類型的數(shù)據(jù),比如說設置一個cookie的到期時間,更新數(shù)據(jù)庫中的日期字段等。但是按照平常的方法來用js里的date類型數(shù)據(jù)時,運行時就會發(fā)生錯誤。2008-05-05
pjblog實現(xiàn)類似CMS的首頁調(diào)用
pjblog實現(xiàn)類似CMS的首頁調(diào)用...2007-02-02
asp實現(xiàn)檢查目錄是否存在與建立目錄的函數(shù)
asp實現(xiàn)檢查目錄是否存在與建立目錄的函數(shù)...2007-09-09

