ASP按字符长度精准截取中英文标题

本文介绍了一种用于处理中英文混合字符串的有效截取方法。通过自定义函数CnSubString和CnCutString,可以准确地根据指定的中文字符长度来裁剪字符串,同时保持字符串的完整性和可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

普通用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%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值