「byte配列 先頭 指定文字数削除」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
どのプログラミング言語について調べていたのかわかりませんけれど、VBA(Visual Basic for Applications)のマクロを2つご紹介しておきます。
Byte型配列を利用して末尾の指定文字数を削除するサンプルマクロ
「byte配列 先頭 指定文字数削除」
ということですが、末尾の文字列を削除する動きを、先に確認するほうがいいように感じます。
以下のSubプロシージャを実行すると、定数・ORGに指定された「松竹梅」という文字列から、定数・DELで指定された末尾の「1」文字削除した「松竹」という文字列が変数・retに代入されているのを、ローカルウィンドウで確認できます。
Const ORG = "松竹梅" ' 元の文字列
Const DEL = 1 ' 削除する文字数
Dim arr_org() As Byte, arr_ret() As Byte
Dim ret As String
Dim i As Long
ReDim arr_ret(UBound(arr_org) - DEL * 2)
For i = 0 To UBound(arr_ret)
arr_ret(i) = arr_org(i)
Next i
ret = arr_ret
Stop
End Sub
元の文字列の格納されているByte配列から、指定文字数削除したByte配列を用意して、
ReDim arr_ret(UBound(arr_org) - DEL * 2)
入れなおしてやれば、指定文字数を削除できます。
For i = 0 To UBound(arr_ret)
arr_ret(i) = arr_org(i)
Byte型配列を利用して先頭の指定文字数を削除するサンプルマクロ
で、以下のSubプロシージャを実行すると、定数・ORGに指定された「松竹梅」という文字列から、定数・DELで指定された先頭の「1」文字削除した「竹梅」という文字列が変数・retに代入されているのを、ローカルウィンドウで確認できます。
Const ORG = "松竹梅" ' 元の文字列
Const DEL = 1 ' 削除する文字数
Dim arr_org() As Byte, arr_ret() As Byte
Dim ret As String
Dim i As Long arr_org = ORG
ReDim arr_ret(UBound(arr_org) - DEL * 2)
For i = 0 To UBound(arr_ret)
arr_ret(i) = arr_org(i + DEL * 2)
Next i
ret = arr_ret
Stop
End Sub
先ほどの末尾の文字列を削除するプロシージャと考え方はよく似ていますが、先頭から削除するのでFor~Nextループ内の、
arr_ret(i) = arr_org(i + DEL * 2)
の部分が異なります。
Home » エクセルマクロ・Excel VBAの使い方 » 配列 » Byte配列を使って先頭・末尾から指定文字数を削除