Function LeftTrue(ByRef str As Variant, ByVal n As Integer, ByVal rl As Integer) As String '函数功能 :显示n个字符(自动识别汉字)(用于显示基本精确) ' str传入的数组 ' n总共截取的长度 ' rl字符串右端必取的字符数不分汉字和英文只是字节数 'Response.Write LeftTrue("ss哈哈ssssssss和",11,0) 'rl用于解决:“发达萨(图)”的问题 If Len(str) <= n / 2 Then LeftTrue = str Else Dim TStr As String, l As Integer, t As Integer, c As Integer, i As Integer l = Len(str) - rl TStr = "" t = 0 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 > n Then TStr = Left(str, i - 2 - rl) & "..." Exit For End If TStr = TStr & (Mid(str, i, 1)) Next LeftTrue = TStr & Right(str, rl) End If End Function
除非有必要,否则我也不想用以下函数 Public Function sTrueLeft(ByVal sTest As String, ByVal lLength As Long) As String sTrueLeft = StrConv(LeftB(StrConv(sTest, vbFromUnicode), lLength), vbUnicode) End Function Public Function sTrueRight(ByVal sTest As String, ByVal lLength As Long) As String sTrueRight = StrConv(RightB(StrConv(sTest, vbFromUnicode), lLength), vbUnicode) End Function Public Function sTrueMid(ByVal sTest As String, ByVal lStart As Long, ByVal lLength As Long) As String sTrueMid = StrConv(MidB(StrConv(sTest, vbFromUnicode), lStart, lLength), vbUnicode) End Function
作用分别是
Left(string, length) 取字符串中从左边算起指定数量的字符。
Mid(string, start[, length])取从start起length个数量的字符。
Right(string,length) 取字符串中从右边算起指定数量的字符
'函数功能 :显示n个字符(自动识别汉字)(用于显示基本精确)
' str传入的数组
' n总共截取的长度
' rl字符串右端必取的字符数不分汉字和英文只是字节数
'Response.Write LeftTrue("ss哈哈ssssssss和",11,0)
'rl用于解决:“发达萨(图)”的问题
If Len(str) <= n / 2 Then
LeftTrue = str
Else
Dim TStr As String, l As Integer, t As Integer, c As Integer, i As Integer
l = Len(str) - rl
TStr = ""
t = 0
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 > n Then
TStr = Left(str, i - 2 - rl) & "..."
Exit For
End If
TStr = TStr & (Mid(str, i, 1))
Next
LeftTrue = TStr & Right(str, rl)
End If
End Function
Public Function sTrueLeft(ByVal sTest As String, ByVal lLength As Long) As String
sTrueLeft = StrConv(LeftB(StrConv(sTest, vbFromUnicode), lLength), vbUnicode)
End Function
Public Function sTrueRight(ByVal sTest As String, ByVal lLength As Long) As String
sTrueRight = StrConv(RightB(StrConv(sTest, vbFromUnicode), lLength), vbUnicode)
End Function
Public Function sTrueMid(ByVal sTest As String, ByVal lStart As Long, ByVal lLength As Long) As String
sTrueMid = StrConv(MidB(StrConv(sTest, vbFromUnicode), lStart, lLength), vbUnicode)
End Function