MidA(文字列, 開始バイト位置, バイト長)関数を作る(VB.NET)
更に、VB.NETに焼き直し。
Public Class Class1
Public Shared Sub Main()
MsgBox(MidA("abcdefg", 3, 2))
MsgBox(MidA("あいうefg", 3, 2))
MsgBox(MidA("あいうefg", 3, 3))
MsgBox(MidA("aいうefg", 3, 2))
MsgBox(MidA("aいうefg", 3, 3))
End Sub
Private Shared Function MidA(Str As String, bStart As Integer, bLength As Integer) As String
Dim aStart As Integer = 0
Dim aLength As Integer = -1
Dim bPosition As Integer = 1
Dim aPosition As Integer
For aPosition = 1 To Len(Str)
If aStart = 0 Then
If bStart = bPosition Then
aStart = aPosition
ElseIf bStart < bPosition Then
aStart = aPosition - 1
bStart = bPosition - 2
End If
Else
If bStart + bLength = bPosition Then
aLength = aPosition - aStart
Exit For
ElseIf bStart + bLength < bPosition Then
aLength = aPosition - aStart - 1
bLength = bPosition - bStart - 2
Exit For
End If
End If
bPosition = bPosition + 1 - (Asc(Mid(Str, aPosition, 1)) < 0)
Next
If aStart Then
If aLength = -1 Then
aLength = aPosition - aStart
bLength = bPosition - bStart
End If
MidA = Mid(Str, aStart, aLength)
End If
End Function
End Class
引数の位置と長さに、補正後の値を返してほしいときは、ByRefに変えてください。
« MidA(文字列, 開始バイト位置, バイト長)関数を作る(VBA) | トップページ | LeftA(文字列, バイト長)とMidA(文字列, 開始バイト位置, バイト長)関数を作る(VB.NET) »