Unicode文字の文字数を数える。半角を1それ以外を2で

半角以外は2でカウント
LenB(StrConv(文字, vbFromUnicode))の場合はS-jisにない変な文字が1でカウントされる。
Public Function LenUnicode(t As String) As Integer

Dim i As Integer

 LenUnicode = 0
 For i = 1 To Len(t)
   If Chr(Asc(Mid(t, i, 1))) <> Mid(t, i, 1) Then
     LenUnicode = LenUnicode + 2
   ElseIf 0 <= AscW(Mid(t, i, 1)) And AscW(Mid(t, i, 1)) <= 127 Then
     LenUnicode = LenUnicode + 1
   ElseIf &HFF61 <= AscW(Mid(t, i, 1)) And AscW(Mid(t, i, 1)) <= &HFF9F Then
     LenUnicode = LenUnicode + 1
   Else
     LenUnicode = LenUnicode + 2
   End If
 Next

End Function

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください