文字列の文字数、バイト数を取得する方法を説明する。
文字数の取得
文字列の文字数を取得するには Len 関数を使う。
Len(string)string には文字列を指定する。
関数は文字列の文字数を返す。
例:半角でも全角でも同じ文字数が返される
WScript.Echo Len("Hello World!") ' → 12 WScript.Echo Len("Hello World!") ' → 12
バイト数の取得(Unicode)
文字列のバイト数を取得するには LenB 関数を使う。
LenB(string)string には文字列を指定する。
VBScript はデータを内部的に Unicode (UTF-16 LE) で持つ。
Unicode は(基本的に)1文字を2バイトで表す。
半角でも全角でも1文字あたり2バイトで計算したバイト数が返る。
例:半角でも全角でも同じバイト数が返される
WScript.Echo LenB("Hello World!") ' → 24 WScript.Echo LenB("Hello World!") ' → 24
バイト数の取得(シフトJIS)
と言ってもそれほど難しい話ではなく。
シフトJISのバイト数を求めるには、文字列の文字単位にバイト数を取得し合計すれば良い。
文字のバイト数は、Asc 関数の戻り値と 0xFF00 の論理積から求められる。
0 なら 1 バイト、それ以外なら 2 バイトである。
↓ イメージ
If (Asc(string) And &HFF00) = 0 Then ' → 1バイト文字 Else ' → 2バイト文字 End If
次の関数は、シフトJISの文字列のバイト数を返す。
Function GetSJISByteCount(str) Dim byteCount byteCount = 0 Dim i For i = 0 To Len(str) - 1 Dim ch ch = Mid(str, i + 1, 1) If (Asc(ch) And &HFF00) = 0 Then byteCount = byteCount + 1 Else byteCount = byteCount + 2 End If Next GetSJISByteCount = byteCount End Function