最近在学习ASP开发一个网站过程中,做一个显示新闻标题的ASP程序,有时候标题中会出现汉字和英文共存,如果直接用left截取字符串,会因为中文字和英文字所在字符长度不一样,而出现两条新闻标题长度不一,通过研究,通过使用这个ASP函数可以解决编程中遇到的这个问题了。
<% ‘************************************************** ‘函数名:gotTopic ‘作 用:截字符串,汉字一个算两个字符,英文算一个字符 ‘参 数:str ----原字符串 ‘ strlen ----截取长度 ‘返回值:截取后的字符串 ‘************************************************** Function gotTopic(ByVal str, ByVal strlen) If str = "" Then gotTopic = "" Exit Function End If Dim l, t, c, i, strTemp str = Replace(Replace(Replace(Replace(str, " ", " "), """, Chr(34)), ">", ">"), "<", "<") l = Len(str) t = 0 strTemp = str strlen = CLng(strlen) For i = 1 To l c = Abs(Asc(Mid(str, i, 1))) If c > 255 Then t = t + 2 Else t = t + 1 End If If t >= strlen Then strTemp = Left(str, i) Exit For End If Next If strTemp <> str Then strTemp = strTemp & "…" End If gotTopic = Replace(Replace(Replace(Replace(strTemp, " ", " "), Chr(34), """), ">", ">"), "<", "<") End Function %> <% str="一共11111w有汉字" str1="一共有五汉字" response.write "gotTopic " response.write gotTopic(str,10)&" "&gotTopic(str1,10)&" " response.write "left " response.write Left(str,5)&" "&Left(str1,5) response.end %> |