ASP世界
ASP中英文混合字符串的截取
作者:佚名 转自:http://www.fnsword.com/
在asp页面显示列表的时候,为了不撑破行,总是需要截取部分字符显示。如果全部是中文或英文字符串就好办多了,left()就搞定,但是对于中英文混合的字符串就不是那么简单,中文一个字符的宽度接近英文字符的2倍。下面是我的解决办法,三个函数,使用CnCutString(orgStr,
length, fill)就可以了,其他二个函数是被它调用的。
'功能: 截取包含中文的字符串
'参数: orgStr 原字符串, len 截取长度
'注意:一个中文字符相当于两个字符或字母,length 是英文字符长度
Function CnSubString(orgStr, length)
Dim orgLen, tmpLen, i
orgLen = Len(orgStr)
tmpLen = 0
IF orgLen >= 1 Then
For i = 1 to orgLen
IF ASC(Mid(orgStr, i, 1)) < 0 or ASC(Mid(orgStr, i, 1)) >255 Then
tmpLen = tmpLen + 2
Else
tmpLen = tmpLen + 1
End IF
IF tmpLen >= length Then
CnSubString = Left(orgStr, i)
Exit Function
End IF
Next
Else
CnSubString = Empty
End IF
End Function
'功能: 包含中文字符串长度
'参数: orgStr 字符串
'注意:一个中文字符等于两个英文字符
Function CnLen(orgStr)
Dim orgLen, tmpLen, i
orgLen = Len(orgStr)
tmpLen = 0
For i = 1 to orgLen
IF ASC(Mid(orgStr, i, 1)) < 0 or ASC(Mid(orgStr, i, 1)) >255 Then
tmpLen = tmpLen + 2
Else
tmpLen = tmpLen + 1
End IF
Next
CnLen = tmpLen
End Function
'功能: 裁剪包含中文字符串
'参数: orgStr 字符串, length 裁剪的长度, fill 字符串长度超出裁剪长度时附加尾部的字符串
'注意:区别于CnSubString函数,length是中文字符长度,两个英文等于一个中文
Function CnCutString(orgStr, length, fill)
IF CnLen(orgStr) > length*2 Then
CnCutString = CnSubString(orgStr, length*2-CnLen(fill)) & fill
Else
CnCutString = orgStr
End IF
End Function本文来自德仔工作室 http
|