普通用left(str,len)就能实现截取
但是遇到汉字,英文,数字混合一段标题就会都计算为一个字符
调用下面代码就能有效地解决这个问题
<%
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) & fill
Else
CnCutString = orgStr
End IF
End Function
%>
<%
dim title
title="一二ABCDEFGHIJK"
title=CnCutString(title,6,"....")
%>
<%=title%>