文字列操作テクニック

HOME ExcelTOP

1.文字列をAsciiバイトで長さや文字列操作するには?


1.文字列をAsciiバイトで長さや文字列操作するには?(substr等)

  CやCOBOL、PL/IユーザーがVBでコーディングを行う際にまず問題になるは、文字列操作ではないでしょうか?通常は、半角文字は1バイト、全角文字は2バイトとAsciiでは決まっていますが、VB系の言語の場合、Unicodeという文字体系が使用されています。Unicodeと言うのは、1文字を全て2バイトで表します。よって、半角文字、全角文字も2バイトで表記するのですが、いざ表記する場合は、半角1バイト、全角2バイトで計算したい事が出てきます。これから記述する関数は、VBでAscii文字のバイトで文字列操作関数です。  

文字列長を取得する関数(Func_LenAscii) 
''**引数説明*******************************
''* 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


文字列の先頭から指定されたバイト数まで抜き出す関数(Func_LeftAscii) 
''**引数説明*******************************
''* 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


文字列の先頭?バイト目から指定されたバイト数まで抜き出す関数(Func_MidAscii) 
''**引数説明*******************************
''* 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

TOP