2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« MidA(文字列, 開始バイト位置, バイト長)関数を作る(VB.NET) | トップページ | ショートカットに書けるバッチワンライナーの作り方 »

2008年10月 5日 (日)

LeftA(文字列, バイト長)とMidA(文字列, 開始バイト位置, バイト長)関数を作る(VB.NET)

別のやり方で。

先にLeftA()を作り、MidA()はLeftA()を2回呼び出します。

Imports System.Text

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
Str=LeftA(Str.Substring(LeftA(Str, bStart-1).Length), bLength)
Return Str
End Function

Private Shared Function LeftA(Str As String, bLength As Integer) As String
Dim enc As Encoding = Encoding.GetEncoding("Shift_JIS")
Dim bytes() As Byte = enc.GetBytes(Str)
If bytes.Length > bLength Then
  Str = Str.Substring(0, enc.GetString(bytes, 0, bLength).Length)
  If enc.GetByteCount(Str) > bLength Then Str = Str.Remove(Str.Length-1)
End If
Return Str
End Function
End Class

« MidA(文字列, 開始バイト位置, バイト長)関数を作る(VB.NET) | トップページ | ショートカットに書けるバッチワンライナーの作り方 »