VB.NETではVB6のLiftB、RigthB、MidB関数がなくなりました。ここではVB6のLiftB、RigthB、MidB関数の代わりになるメソッドの作り方について紹介します。

LiftB関数

VB6のLeftB関数は、文字列の左側より指定したバイト数の文字を取得します。
以下はVB.NETでのLiftB関数の代わりになるサンプルです。

Public Function LeftB(ByVal str As String, ByVal byteSize As Integer) As String
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
    Dim hEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")
    Dim btBytes As Byte() = hEncode.GetBytes(str)

    If byteSize <= btBytes.Length Then
        Return hEncode.GetString(btBytes, 0, byteSize)
    End If

    Return str
End Function


RigthB関数

VB6のRigthB関数は、文字列の右側より指定したバイト数の文字を取得します。
以下はVB.NETでのRigthB関数の代わりになるサンプルです。

Public Function RightB(ByVal str As String, ByVal byteSize As Integer) As String
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
    Dim hEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")
    Dim btBytes As Byte() = hEncode.GetBytes(str)

    If byteSize <= btBytes.Length Then
        Return hEncode.GetString(btBytes, btBytes.Length - byteSize, byteSize)
    End If

    Return str
End Function


MidB関数

VB6のMidB関数は、文字列の指定位置より指定バイト数の文字を取得します。第3引数を省略した場合は、第2引数の位置から最後までの文字を取得します。
以下はVB.NETでのMidB関数の代わりになるサンプルです。

Public Function MidB(ByVal str As String, ByVal start As Integer, ByVal byteSize As Integer) As String
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
    Dim hEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")
    Dim btBytes As Byte() = hEncode.GetBytes(str)

    If start <= btBytes.Length Then
        If (btBytes.Length - start) < byteSize Then
            byteSize = btBytes.Length - start + 1
        End If
        Return hEncode.GetString(btBytes, start - 1, byteSize)
    End If

    Return String.Empty
End Function

Public Function MidB(ByVal str As String, ByVal start As Integer) As String
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
    Dim hEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
    Dim btBytes As Byte() = hEncode.GetBytes(str)

    If start <= btBytes.Length Then
        Dim byteCount As Integer = btBytes.Length - start + 1
        Return hEncode.GetString(btBytes, start - 1, byteCount)
    End If

    Return String.Empty
End Function


以上、VB.NETでVB6のLiftB、RigthB、MidB関数の代わりになるメソッドの作り方について解説しました。