首页 > 代码库 > ASP如何计算中英文混合字符串长度和截取字符串

ASP如何计算中英文混合字符串长度和截取字符串

用ASP做网站的时候经常会碰到要截取字符串的情况。ASP中的Len函数不管是中文字符,还是英文字符,统统按一个单位来计算,由于一个中文字符的宽度是一个英文字符宽度的两倍,在中英文混合的情况下字符串实际占用的宽度就不好计算了,如果按照Len函数计算的长度来截取字符串截出来的效果也会长短不一,下面是按照一个汉字相当于两个英文字符来计算字符串长度和截取字符串的代码

 

计算中英文混合字符串的长度:

[vb] view plaincopyprint?
  1. function getStringLen(str) 
  2. on error resume next        
  3.     dim l,c,i,t 
  4.     l=len(str) 
  5.     t=l 
  6.     for i=1 to l 
  7.         c=asc(mid(str,i,1)) 
  8.         if c>=128 or c<0 then t=t+1 
  9.     next         
  10.     getStringLen=t   
  11.     if err.number<>0 then err.clear 
  12. end function 

 

 

截取字符串:

[vb] view plaincopyprint?
  1. function getSubString(str,Length) 
  2. on error resume next        
  3.     dim l,c,i,hz,en 
  4.     l=len(str) 
  5.     if l<length then 
  6.         getSubString=str 
  7.     else 
  8.         hz=0 
  9.         en=0 
  10.         for i=1 to l 
  11.             c=asc(mid(str,i,1)) 
  12.             if c>=128 or c<0 then  
  13.                 hz=hz+1 
  14.             else 
  15.                 en=en+1 
  16.             end if 
  17.      
  18.             if en/2+hz>=length then 
  19.                 exit for 
  20.             end if 
  21.         next         
  22.         getSubString=left(str,i) & "…" 
  23.     end if 
  24.     if err.number<>0 then err.clear 
  25. end function