前回は「getstr」命令を使って文字列の一部を抽出しました。今回は「strmid」関数を使って文字列の一部を抽出してみます。
strmid (p1,p2,p3)
p1: 対象文字列
p2: 抽出開始バイト
p3: 取り出すバイト数
p1: 対象文字列
p2: 抽出開始バイト
p3: 取り出すバイト数
1 2 3 |
例1) p1 = "ABCDEFG" x = strmid (p1,2,3) mes x |
(結果) CDE |
例1は、p1(ABCXDEFXG) の文字列からp2(2バイト)を開始位置としてp3(3バイト)分の文字を抽出しています。半角英数字は1文字1バイトとすると、「AB」で2バイトなので「B」が終わった位置から3バイト分つまり半角英数字3文字分である「CDE」が抽出されます。
1 2 3 |
例2) p1 = "漢BCDEFG" x = strmid (p1,2,3) mes x |
(結果) BCD |
例2は、例1の対象文字の「A」を「漢」に変更しただけです。utf8などの文字コードでは漢字1文字に3バイト使う場合もあるので文字コードによりバイト数は異なりますが、例2では漢字1文字2バイトとします。「漢」だけで2バイトなので開始位置の2バイトとは「漢」の終わったところです。そこから3バイト分の抽出なので「BCD」となります。文字数でなくてバイト数で指定していることに気をつけてください。
1 2 3 |
例3) p1 = "ABCDEFG" x = strmid (p1,2,10) mes x |
(結果) CDEFG |
今回は抽出バイト数を10にしました。この数は対象文字列より大きいです。「CDEFG」で5バイト分しかありませんが、超える数を指定してもエラーにならずに最後までが抽出されます。
1 2 3 |
例4) p1 = "ABCDEFG" x = strmid (p1,-2,3) mes x |
(結果) EFG |
開始位置を「-2」のようにマイナスにしました。右からの位置を指定するのかと思ったら、「-1」であろうと「-2」であろうとマイナスであれば一番右から開始して左へ何バイト分かになりました。右から3バイト分なので「EFG」が抽出されます。
「文字列の一部を抽出(strmid) 『HSP3』」への1件のフィードバック