通常のMid()、Left(),Right()関数ではバイト数に関係なく、文字数で文字操作が行われてします。
半角(1バイト)、全角(2バイト)の区別ありません。
バイト単位で文字操作を行いたい場合は、MidB(),LeftB(),RightB()を使用します。
ただ、MidB()関数は通常通り使用できません。
一旦 、StrConvでvbFromUnicodeに変換して仕様します。
使用方法は下記の通りです。
StrConv(MidB(StrConv(."ブログF2", vbFromUnicode), 1, 6), vbUnicode)
※ブログがかえされる。
---------------------------------------------------------------------------
Mid()関数とMidB()関数の違い
Dim astr as String
astr = "ブログはFC2"
MsgBox Mid(astr,1,6) '「ブログはFC」と表示される
MsgBox StrConv(MidB(StrConv(astr, vbFromUnicode), 1, 6), vbUnicode)
'「ブログ」と表示される
'※MidBを使用する場合はStrConvを使用してvbFromUnicodeに変換する必要があります。
' ただし、vbFromUnicodeのままでは文字化けするので、
' 再度、StrConvを使用して vbUnicodeにする必要があります。
' LenB()、RightB()関数の使用方法も同様です。
---------------------------------------------------------------------------
補足
バイト単位の文字数の確認はLenB()関数を使用します。
使用方法は
LenB(StrConv("ブログはFC2", vbFromUnicode)) ' 11 がかえされる
Len("ブログはFC2") '7 がかえされる
---------------------------------------------------------------------------
VB6 関数
0 件のコメント:
コメントを投稿