VB计算汉字长度函数(lenX-leftX-rightX)

  自从VB4.0后,就把汉字看做是1个字符了。这给我们的字符串的截取带来了严重的麻烦!

  如果是汉字 数字或字母的字符串,往往截取到的字符串长度不是理想中的,其中涉及到的函数有LEN、LEFT、RIGHT

  我收集了如下3个函数,用来取代 len()、left()、right(),可以把他们放到公共模块里面,以便于随时可以调用,希望能解决您的问题。

‘——————————————————–
‘Name: lenX
‘Argument: uStr
‘Return:
‘Description: 返回字符串的长度,1个中文字符长度为2
‘——————————————————–
Function lenX(ByVal uStr)
  Dim theLen, x, testuStr
  theLen = 0
  For x = 1 To Len(uStr)
    testuStr = Mid(uStr, x, 1)
    If Asc(testuStr) < 0 Then
      theLen = theLen + 2
    Else
      theLen = theLen + 1
    End If
  Next
  lenX = theLen
End Function

‘——————————————————–
‘Name: leftX
‘Argument: uStr 待处理的字符串
‘ uLen 要截取的长度
‘Return:
‘Description: 返回指定长度的字符串,1个中文字符长度为2
‘——————————————————–
Function leftX(ByVal uStr, ByVal uLen)
  Dim i, j, uTestStr, theStr
  leftX = “”
  j = 0
  For i = 1 To Len(uStr)
    uTestStr = Mid(uStr, i, 1)
    theStr = theStr & uTestStr
    If Asc(uTestStr) < 0 Then
      j = j + 2
    Else
      j = j + 1
    End If
    If j >= uLen Then Exit For
  Next
  leftX = theStr
End Function

‘——————————————————–
‘Name: rightX
‘Argument: uStr 待处理的字符串
‘ uLen 要截取的长度
‘Return:
‘Description: 返回指定长度的字符串,1个中文字符长度为2
‘——————————————————–
Function rightX(ByVal uStr, ByVal uLen)
  Dim i, j, uTestStr, ii, jj, pp
  rightX = “”
  j = 0
  For i = Len(uStr) – 99 To Len(uStr)
    uTestStr = Mid(uStr, i, 1)
    rightX = rightX & uTestStr
    If Asc(uTestStr) < 0 Then
      j = j + 2
    Else
      j = j + 1
    End If
    If j >= uLen Then Exit For
  Next
End Function

  下载链接:

  

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据