asp截取指定英漢混合字串_支援中文

來源:互聯網
上載者:User

說明:本函數作用是截取指定英漢混合字串,並保持顯示長度一至。就是將一個漢字當兩英文來截取。
用途:一般會用在標題顯示列表,可以避免截取的字串參插不齊的現象。
程式碼 複製代碼 代碼如下:'//A_strString要處理的字串
'//A_intLen以英文字元數為準
'//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'不區分大小寫
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

這個和目前網上流行的不太一樣,用的是正則式來擷取非ANSI字元(這裡預設非ANSI字元為漢字,如果有偏差可以修改正則式來達到目的)。先註明一點:函數指定長度以英文字元數為準。即是指定為10,含義為10個英文或5個漢字
作了兩點最佳化:
第一點:直接擷取指定長度的字元,因為不管是全漢字還是全英文,最長不過是全英文長度,超過的字元是絕對淘汰字元。
第二點:使用正則尋找範圍內的漢字,並只遍曆每個漢字的字數,這樣可以最大程度上減少迴圈次數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.