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