欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp截取指定英汉混合字符串_支持中文

程序员文章站 2022-08-06 07:59:35
说明:本函数作用是截取指定英汉混合字符串,并保持显示长度一至。就是将一个汉字当两英文来截取。 用途:一般会用在标题显示列表,可以避免截取的字符串参插不齐的现象。 程序代码...
说明:本函数作用是截取指定英汉混合字符串,并保持显示长度一至。就是将一个汉字当两英文来截取。
用途:一般会用在标题显示列表,可以避免截取的字符串参插不齐的现象。
程序代码
复制代码 代码如下:

'//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个汉字
作了两点优化:
第一点:直接获取指定长度的字符,因为不管是全汉字还是全英文,最长不过是全英文长度,超过的字符是绝对淘汰字符。
第二点:使用正则寻找范围内的汉字,并只遍历每个汉字的字数,这样可以最大程度上减少循环次数。