1.文字列をAsciiバイトで長さや文字列操作するには? |
1.文字列をAsciiバイトで長さや文字列操作するには?(substr等)
CやCOBOL、PL/IユーザーがVBでコーディングを行う際にまず問題になるは、文字列操作ではないでしょうか?通常は、半角文字は1バイト、全角文字は2バイトとAsciiでは決まっていますが、VB系の言語の場合、Unicodeという文字体系が使用されています。Unicodeと言うのは、1文字を全て2バイトで表します。よって、半角文字、全角文字も2バイトで表記するのですが、いざ表記する場合は、半角1バイト、全角2バイトで計算したい事が出てきます。これから記述する関数は、VBでAscii文字のバイトで文字列操作関数です。
''**引数説明******************************* ''* pS_String:文字長を取得したい対象文字列 ''***************************************** Public Function Func_LenAscii(pS_String As String) As Integer On Error GoTo ErrHandler Func_LenAscii = 0 Func_LenAscii = LenB(StrConv(pS_String, vbFromUnicode)) On Error GoTo 0 Exit Function ErrHandler: On Error GoTo 0 End Function |
''**引数説明******************************* ''* pS_String:元の対象文字列 ''* pI_Len :先頭から抜き出すバイト数 ''***************************************** Public Function Func_LeftAscii(pS_String As String, pI_Len As Integer) As String Dim S_Wkstring As String '作業用文字列エリア On Error GoTo ErrHandler ''Asciiに変換し、LeftB関数を行う S_Wkstring = LeftB(StrConv(pS_String, vbFromUnicode), pI_Len) Func_LeftAscii = StrConv(S_Wkstring, vbUnicode) On Error GoTo 0 Exit Function ErrHandler: Func_LeftAscii = "" On Error GoTo 0 End Function |
''**引数説明******************************* ''* pS_String:元の対象文字列 ''* pI_Pos :先頭から抜き出す文字列の先頭位置 ''* pI_Len :抜き出すバイト数 ''***************************************** Public Function Func_MidAscii(pS_String As String, pI_Pos As Long, pI_Len As Long) As String Dim S_Wkstring As String '作業用文字列エリア On Error GoTo ErrHandler ''Asciiに変換し、LeftB関数を行う S_Wkstring = MidB(StrConv(pS_String, vbFromUnicode), pI_Pos, pI_Len) Func_MidAscii = StrConv(S_Wkstring, vbUnicode) On Error GoTo 0 Exit Function ErrHandler: Func_MidAscii = "" On Error GoTo 0 End Function |