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
    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
     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
    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
     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関数の代わりになるメソッドの作り方について解説しました。