文字列関数

関数一覧

CHANGE CONVCHR CUTHEAD CUTSP CUTTAIL
DELETE DELETE_TAIL DEQUOTE DEQUOTE_S FILTER_ALPHA
FILTER_AN FILTER_ENG FILTER_NUM FIXRIGHT FIXWIDTH
FULL FULL2 HALF HEAD HIRAGANA
INSERT KANA_PACK KATAKANA LARGE LARGE_ENG
LEFT LEFTBYTE LEN LONGEST MASKCHR
MAXSTR MEANIN MEANSTR MID MINSTR
NARROW PART PART_COUNT PART_LOOP PART_LOOP2
PART_POS PART_REPLACE PART_REPLACE2 POS POSRIGHT
QUOTE QUOTE_S REJECT_CTRL REJECT_ENG REJECT_FULL
REJECT_HALF REJECT_JPN REJECT_SPACE REPLACE REVERSE
RIGHT RIGHTBYTE ROT_LEFT ROT_RIGHT SHORTEN
SHORTEN_HEAD SHORTEN_MID SHORTEST SMALL SMALL_ENG
SRCHSTR SRCHSTR_COUNT SRCHSTR_LOOP SRCHSTR_REPLACE SRCHSTR_REV
STRING STR_LOOP STR_LOOP_COUNT STR_LOOP_SRCH TAIL
WIDE WIDTH WIDTHIX

文字列幅に関する関数

LEN

num LEN( str 文字列式 )
文字数を返す。数値。

WIDTH

num WIDTH( str 文字列式 )
半角換算した幅を得る。数値。

引数から選択

MAXSTR

str MAXSTR( str 文字列式 [, str 文字列式]*)
引数の中で最大の文字列

MINSTR

str MINSTR( str 文字列式 [, str 文字列式]*)
引数の中で最小の文字列

LONGEST

str LONGEST( str 文字列式 [, str 文字列式]*)
引数の中で文字数が最も多い文字列。文字数が同じ場合は最初に現れたものを返す。

SHORTEST

str SHORTEST( str 文字列式 [, str 文字列式]*)
引数の中で文字数が最も少ない文字列。文字数が同じ場合は最初に現れたものを返す。

WIDE

str WIDE( str 文字列式 [, str 文字列式]*)
引数の中で半角換算した幅が最も広い文字列。幅が同じ場合は最初に現れたものを返す。

NARROW

str NARROW( str 文字列式 [, str 文字列式]*)
引数の中で半角換算した幅が最も狭い文字列。幅が同じ場合は最初に現れたものを返す。

文字位置での取り出し

LEFT

str LEFT( str 文字列式 , num文字数 )
文字列式の値の先頭から文字数分だけ取り出す。 文字列の長さを越えた場合は文字列をそのまま取り出す。

RIGHT

str RIGHT( str 文字列式 , num文字数 )
文字列式の値の末尾から文字数分だけ取り出す。 文字列の長さを越えた場合は文字列がそのまま取り出す。

MID

str MID( str 文字列式 , num 位置 [, num 文字数] )
文字列のまん中を取り出す。 指定の位置から、指定の文字数分だけ取り出す。 文字数が省略された場合は、指定の位置以降のすべての文字列を取り出す。 文字列の位置は左端を0として表わすので注意すること。

バイト位置での取り出し

POS

num POS( str 文字列式 , num 開始位置 , num バイト幅 )
左側から数えてバイト幅に収まる位置(文字単位)を返す。数値。
開始位置は左端から数えた文字単位での値。0を与えれば、先頭から調べる。

POSRIGHT

num POSRIGHT( str 文字列式 , num 開始位置 , num バイト幅 )
右側から数えてバイト幅に収まる位置を返す。数値。
開始位置は左端から数えた文字の開始。0が先頭。 文字列の長さ以上の値を与えると、文字列の末尾から調べる。 文字列の長さが解らないときに最後から調べるためには、この引数にオーバーフロー値(システム変数ERROR)を入れると良い。

WIDTHIX

num WIDTHIX( str 文字列式 , num 開始位置 , num 終了位置 )
文字列の指定範囲のバイト幅。数値。
開始位置は左端から数えた文字の開始位置。0が先頭。 終了位置は調べる領域の次の位置。

LEFTBYTE

str LEFTBYTE( str 文字列式 , num バイト幅 )
文字列の左から指定のバイト幅に収まるように文字列を取り出す。

RIGHTBYTE

str RIGHTBYTE( str 文字列式 , num バイト幅 )
文字列の右から指定のバイト幅に収まるように文字列を取り出す。文字列値。

FIXWIDTH

str FIXWIDTH( str 対象文字列 , num バイト幅 )
文字列式の長さををバイト幅に左つめで合わせる。
足りない分は半角スペースで埋める。

FIXRIGHT

str FIXRIGHT( str 対象文字列 , num バイト幅 )
文字列の長さをバイト幅に右つめで合わせる。
足りない分は半角スペースで埋める。

SHORTEN

str SHORTEN( str 対象文字列 , num バイト幅 )
文字列を指定のバイト幅に左寄せでつめる。
文字列がバイト幅より短ければ、何もしない。 文字列がバイト幅より長い場合は、バイト幅に詰め合わせ、 右端に3-4文字の.が付加される。
文字列のバイト幅が5文字より小さいと正しく動作しない。

SHORTEN_HEAD

str SHORTEN_HEAD( str 対象文字列 , num バイト幅 )
文字列を指定のバイト幅に右寄せでつめる。
文字列がバイト幅より短ければ、何もしない。 文字列がバイト幅より長い場合は、バイト幅に詰め合わせ、 左端に3-4文字の.が付加される。
文字列のバイト幅が5文字より小さいと正しく動作しない。

SHORTEN_MID

str SHORTEN_MID( str 対象文字列 , num バイト幅 )
文字列を指定のバイト幅に中央を刈り込んで詰め合わせる。
文字列がバイト幅より短ければ、何もしない。 文字列がバイト幅より長い場合は、バイト幅に詰め合わせ、 文字列中央部に3-4文字の.が付加される。
文字列のバイト幅が5文字より小さいと正しく動作しない。

基本操作

INSERT

str INSERT( str 対象文字列 , str 挿入文字列 , num 挿入位置 )
対象文字列の指定位置に挿入文字列を挿入する。 挿入位置が対象文字列の長さよりも大きいときは、挿入文字列を追加する。

DELETE

str DELETE( str 対象文字列 , num 削除位置 , num 削除文字数 )
対象文字列の指定位置から削除文字数分だけ削除する。

DELETE_TAIL

str DELETE_TAIL( str 対象文字列 , num 削除文字数 )
対象文字列の後ろから削除文字数分だけ削除する。

CHANGE

str CHANGE( str 対象文字列 str 挿入文字列 , num 置換位置 , num 置換文字数 )
対象文字列の置換位置から削除文字数分を挿入文字列で置きかえる。 置換文字位置が対象文字列の長さ以上の場合は、文字列の追加となる。
挿入文字列が空の場合は、DELETE関数と同じ働きをし、 置換文字数が0の場合は、INSERT関数と同じ働きとなる。

STRING

str STRING( str 対象文字列 , num 回数 )
文字列式を回数だけ繰り返して連結。

一致による検索と置換

HEAD

bool HEAD( str 対象文字列 , str 検索文字列 )
対象文字列の先頭に検索文字列が含まれれば真。

TAIL

bool TAIL( str 対象文字列 , str 検索文字列 )
対象文字列の末尾に検索文字列が含まれれば真。

SRCHSTR

num SRCHSTR( str 対象文字列 , str 検索文字列 [ , num 開始位置 ] )
対象文字列の開始位置から順方向に探した最初の検索文字列の位置を返す。
開始位置を省略すると先頭から探す。 位置は0から数える。検索文字列を含まなければ値-1を返す。

SRCHSTR_REV

num SRCHSTR_REV( str 対象文字列 , str 検索文字列 )
対象文字列の末尾から逆方向に探した最初の検索文字列の位置を返す。
検索文字列が空ならば、対象文字列の長さを返す(末尾で一致したということ)。 位置は0から数える。検索文字列を含まなければ値-1を返す。

SRCHSTR_COUNT

num SRCHSTR_COUNT( str 対象文字列 , str 検索文字列 )
対象文字列の中に含まれる検索文字列の数を返す。
検索文字列が空ならば値-1を返す。

REPLACE

str REPLACE( str 対象文字列 , str 検索文字列 , str 置換文字列 )
対象文字列に含まれる検索文字列をすべて、置換文字列で置き換える。 検索文字列の長さが0の場合は置換を行わない。 置換文字列の長さが0ならば、長さ0の文字列と置き換え、すなわち、削除になる。

挟まれた文字列の検索と置換

PART

str PART( str 対象文字列 , str 先頭文字列 , str 末尾文字列 )
対象文字列から、先頭文字列と末尾文字列に挟まれた最初の文字列を取り出す。 先頭文字列の長さが0の場合は先頭から末尾文字列までの部分を取り出す。 末尾文字列の長さが0の場合は先頭文字列から末尾までの部分を取り出す。

PART_POS

num PART_POS( str 対象文字列 , str 先頭文字列 , str 末尾文字列 [ , 長さ格納先変数名 ] )
対象文字列から、先頭文字列と末尾文字列に挟まれた最初の文字列を探し、 その文字単位での位置を返す。
長さ格納先変数名は、数値変数、あるいは、数値配列の要素で、 見つかった部分文字列の長さを格納する。これは、省略可能。
先頭文字列の長さが0の場合は先頭から末尾文字列まで部分が対象。 末尾文字列の長さが0の場合は先頭文字列から末尾までの部分が対象。

PART_COUNT

num PART_COUNT( str 対象文字列 , str 先頭文字列 , str 末尾文字列 )
対象文字列から、先頭文字列と末尾文字列に挟まれた文字列の個数を返す。
先頭文字列の長さが0の場合は先頭から末尾文字列まで部分が対象。 末尾文字列の長さが0の場合は先頭文字列から末尾までの部分が対象。

曖昧な文字列

MEANSTR

str MEANSTR( str 対象文字列 )
曖昧文字列に変換する。

MEANIN

bool MEANIN( str 対象文字列 , str 検索文字列 )
対象文字列が検索文字列を曖昧に含めば真。

回転と反転

ROT_RIGHT

str ROT_RIGHT( str 対象文字列 , num 回転数 )
文字列を右へ回転する。回転数が極端に大きすぎると回転しない。

ROT_LEFT

str ROT_LEFT( str 対象文字列 , num 回転数 )
文字列を左へ回転する。回転数が極端に大きすぎると回転しない。

REVERSE

str REVERSE( str 文字列式 )
文字列式を逆順にする

引用符の取扱

QUOTE

str QUOTE( str 対象文字列 )
ダブルクォート"で囲む。 文字列内部にあるダブルクォート"""になる。

QUOTE_S

str QUOTE_S( str 対象文字列 )
シングルクォート'で囲む。 文字列内部にあるシングルクォート'''になる。

DEQUOTE

str DEQUOTE( str 対象文字列 )
ダブルクォート"で囲まれた文字列のダブルクォートを外す。 文字列内部にある"""になる。 先頭に"がない場合は変換しない。 出来るだけ解釈するが、正常な記述でない場合はうまく行かない。

DEQUOTE_S

str DEQUOTE_S( str 対象文字列 )
シングルクォート'で囲まれた文字列のシングルクォートを外す。 文字列内部にある'''になる。 先頭に'がない場合は変換しない。 出来るだけ解釈するが、正常な記述でない場合はうまく行かない。

空白の省略

CUTHEAD

str CUTHEAD( str 対象文字列 )
対象文字列の先頭の半角スペース、全角スペースを省く。

CUTTAIL

str CUTTAIL( str 対象文字列 )
対象文字列の末尾の半角スペース、全角スペースを省く。

CUTSP

str CUTSP( str 対象文字列 )
対象文字列の先頭と末尾の半角スペース、全角スペースを省く。

文字単位での取扱

CONVCHR

str CONVCHR( str 対象文字列 , str 検索文字列 , str 置換文字列 )
文字変換。文字列式を返す。
対象文字列の中の文字のうち、検索文字列の中に含まれるものを、 それに対応する置換文字列の中の文字と置き換える。 検索文字列の中に文字が 重複してある場合は先頭の方にあるものが優先する。 検索文字列の中にある文字で対応する文字が置換文字列にない場合は、削除される。 検索文字列に対応しない置換文字列の中の文字は無視する。

MASKCHR

str MASKCHR( str 対象文字列 , str 検索文字列 )
文字列マスク処理。
対象文字列の中の文字のうち、検索文字列の中に含まれ無い文字を取り除く。

文字の変換

FULL

str FULL( str 対象文字列 )
半角文字を全角文字に変換する。濁点、半濁点の処理を行う。 半角カタカナは全角カタカナに変換する。

FULL2

str FULL2( str 対象文字列 )
半角文字を全角文字に変換する。濁点、半濁点の処理を行わない。

HALF

str HALF( str 対象文字列 )
全角文字を半角文字にする。

KANA_PACK

str KANA_PACK( str 対象文字列 )
全角の濁点、半濁点を詰め合わせる。

HIRAGANA

str HIRAGANA( str 対象文字列 )
全角カタカナをひらがなに置き換える。

KATAKANA

str KATAKANA( str 対象文字列 )
全角ひらがなをカタカナに置き換える。

LARGE

str LARGE( str 対象文字列 )
半角英字、全角英字、ギリシャ文字、ロシア文字を大文字にする。

SMALL

str SMALL( str 対象文字列 )
半角英字、全角英字、ギリシャ文字、ロシア文字を小文字にする。

LARGE_ENG

str LARGE_ENG( str 対象文字列 )
半角英字を大文字にする。

SMALL_ENG

str SMALL_ENG( str 対象文字列 )
半角英字を小文字にする。

文字除去フィルター

REJECT_FULL

str REJECT_FULL( str 対象文字列 )
全角文字を取り除く。

REJECT_HALF

str REJECT_HALF( str 対象文字列 )
半角文字を取り除く。

REJECT_CTRL

str REJECT_CTRL( str 対象文字列 )
制御文字を取り除く。通常は使用しない。

REJECT_SPACE

str REJECT_SPACE( str 対象文字列 )
全角、半角のスペースを取り除く。

REJECT_JPN

str REJECT_JPN( str 対象文字列 )
半角のカタカナ(0x80-0xff)を取り除く。

REJECT_ENG

str REJECT_ENG( str 対象文字列 )
半角の英字領域(0x20-0x7e)を取り除く。

文字透過フィルター

FILTER_ENG

str FILTER_ENG( str 対象文字列 )
半角の英字領域(0x20-0x7e)だけを残す。

FILTER_AN

str FILTER_AN( str 対象文字列 )
半角の英数字だけを残す。

FILTER_ALPHA

str FILTER_ALPHA( str 対象文字列 )
半角の英字だけを残す。

FILTER_NUM

str FILTER_NUM( str 対象文字列 )
半角の数字だけを残す。

引数ループ

STR_LOOP

bool STR_LOOP( str 対象文字列 [ , 対象文字列 ]* ; 実行式 [ , 実行式 ]* )
対象文字列の全てに対して、実行式を繰り返す。戻り値は常に真。
着目中の文字列は、実行式の中で変数MEMBERで参照できる。

STR_LOOP_COUNT

num STR_LOOP_COUNT( str 対象文字列 [ , 対象文字列 ]* ; bool 検定式 )
対象文字列の全てに対して、検定式を繰り返し、検定式が真となった数を返す。
着目中の文字列は、検定式の中で変数MEMBERで参照できる。

STR_LOOP_SRCH

str STR_LOOP_SRCH( str 対象文字列 [ , 対象文字列 ]* ; bool 検定式 )
対象文字列の全てに対して、検定式を順に繰り返し、検定式が真となった対象文字列を返す。
着目中の文字列は、検定式の中で変数MEMBERで参照できる。 対象文字列の評価(値の確定)は最初に行われるが、 検定式は、真となった時点で終了する。 以降の検定式の評価は行わない。

検索文字列ループ

SRCHSTR_LOOP

bool SRCHSTR_LOOP( str 対象文字列 , str 検索文字列 , 実行式 [ , 実行式 ]* )
対象文字列の中に含まれる検索文字列すべてに対して実行式を評価する。
検索文字列が空の場合は何もせず、偽を返す。それ以外では真を返す。

SRCHSTR_REPLACE

str SRCHSTR_REPLACE( str 対象文字列 , str 検索文字列 , str 置換式 )
対象文字列の中に含まれる検索文字列すべてに対して置換式を評価し、 その値で置き換える。
検索文字列が空の場合は何もせず対象文字列を返す。

挟まれた文字列のループ

PART_LOOP

bool PART_LOOP( str 対象文字列 , str 先頭文字列 , str 末尾文字列 , 実行式 [ , 実行式 ]* )
対象文字列から、先頭文字列と末尾文字列に挟まれた文字列のすべてに対し、 実行式を評価する。戻り値は常に真。
実行式内では、挟まれた文字列を特殊な変数MEMBERで参照できる。 先頭文字列の長さが0の場合は先頭から末尾文字列まで部分が対象。 末尾文字列の長さが0の場合は先頭文字列から末尾までの部分が対象。

PART_LOOP2

bool PART_LOOP2( str 対象文字列 , str 先頭文字列 , str 末尾文字列 , 実行式 [ , 実行式 ]* )
PART_LOOP関数とほぼ同じ動作をするが、 実行式内で、特殊な変数MEMBERで参照するのは、 「先頭文字列+挟まれた文字列+末尾文字列」になっている点が違う。

PART_REPLACE

str PART_REPLACE( str 対象文字列 , str 先頭文字列 , str 末尾文字列 , str 置換式 )
対象文字列から先頭文字列と末尾文字列で挟まれた部分を全て取り出し、 置換式を評価してその値と置きかえた文字列を返す。
置換式内では、着目中の文字列を特殊な変数MEMBERで参照できる。

PART_REPLACE2

str PART_REPLACE2( str 対象文字列 , str 先頭文字列 , str 末尾文字列 , str 置換式 )
PART_REPLACEと同様な動作をするが、以下の点が異なる。
  1. 置換対象は、「先頭文字列+挟まれた文字列+末尾文字列」
  2. 置換式内での、MEMBERは、「先頭文字列+挟まれた文字列+末尾文字列」を参照する

リスト処理関数の多くは、セパレータを空文字列にすると、 文字列を構成する各文字をメンバーとして扱うので文字列処理に流用できる。

  1. LIST
  2. LIST_INC_STR
  3. LIST_EXC_STR
  4. LIST_LOOP
  5. LIST_LOOP_FILTER
  6. LIST_LOOP_REPLACE
  7. LIST_LOOP_AND
  8. LIST_LOOP_OR
  9. LIST_LOOP_SRCH