Imports System.Text
Public Shared Function SubstringByte(ByVal value As String, ByVal startIndex As Integer, ByVal length As Integer) As String
Dim sjisEnc As Encoding = Encoding.GetEncoding("Shift_JIS")
Dim byteArray() As Byte = sjisEnc.GetBytes(value)
If byteArray.Length < startIndex + 1 Then
Return ""
End If
If byteArray.Length < startIndex + length Then
length = byteArray.Length - startIndex
End If
Dim cut As String = sjisEnc.GetString(byteArray, startIndex, length)
Dim left As String = sjisEnc.GetString(byteArray, 0, startIndex + 1)
Dim first As Char = value(left.Length - 1)
If 0 < cut.Length AndAlso Not first = cut(0) Then
cut = cut.Substring(1)
End If
left = sjisEnc.GetString(byteArray, 0, startIndex + length)
Dim last As Char = value(left.Length - 1)
If 0 < cut.Length AndAlso Not last = cut(cut.Length - 1) Then
cut = cut.Substring(0, cut.Length - 1)
End If
Return cut
End Function