ふぢのVB小技集 |
文字列の長さ(バイト数)を求めたい。
(質問)
Ascii文字列の長さ(バイト数)を求めたいのですが、VBはUnicodeのためにうまくもとめられません。良い方法はありますか?
(回答)
文字列をStrConv関数でAscii形式に変換してから文字列の長さを求めます。
(解説)
VB内部で使用される文字コードはUnicodeといって、全ての文字が2バイトで表現されます。
そのため、そのまま文字列の長さを求めても結果はAsciiのものではありません。
そこで文字列を一度Ascii形式に変換してから長さを求めます。
以下に、サンプルコードを示します。
任意の処理にかかっている時間を調べる Private Sub Command1_Click() Dim strBuf As String strBuf = "あいうえおアイウエオ" Debug.Print "Unicode文字数(Len) = "; Debug.Print Format$(Len(strBuf)) Debug.Print "Unicodeバイト数(LenB) = "; Debug.Print Format$(LenB(strBuf)) Debug.Print "Ascii文字数(Len) = "; Debug.Print Format$(Len(StrConv(strBuf, vbFromUnicode))) Debug.Print "Asciiバイト数(LenB) = "; Debug.Print Format$(LenB(StrConv(strBuf, vbFromUnicode))) End Sub
実行結果はこのようになります。
戻る