FF504 FVXの汎用関数ライブラリ-文字列関数
 
 ◆ 概要 ◆

FVXで利用可能な汎用関数ライブラリのうち、文字列関数について説明します。

 ◆ 詳細 ◆
     

文字列関数

format(formatstring, e1, e2, ...)
最初の引数formatstring(文字列でなければなりません)で指定されたフォーマットに従って可変長引数の文字列を整形して返します。 formatstringは標準C関数のprintfファミリと同じ規則に従います。 唯一の違いはオプション/修飾子*、l、L、n、p、hはサポートされておらず、追加オプションqがあることです。
qオプションはFVXインタプリタによって安全に読み戻されるのに適した形式で文字列を整形します。文字列は二重引用符で囲み、文字列中の全ての二重引用符、改行、バックスラッシュは正しくエスケープされます。例えば、

format("%q", 'a string with "quotes" and \n new line')

は次のような文字列に整形されます。

"a string with \"quotes\" and \
new line"

フォーマットは次の未使用の引数ではなく、引数リストのn番目の引数に適用することもできます。 この場合、変換文字%はシーケンス%t$で置き換えられます。ここで、tは[1,9]の範囲の10進数で、引数リスト内の引数の位置を示します。例えば、

format("%2$d -> %1$03d", 1, 34)

は次のような文字列に整形されます。

"34 -> 001"

最初の引数1はフォーマット文字列%1$03dにより整形されます。書式中の3により文字列長は3に強制され、0により結果の長さが3未満の場合に文字列に0が埋め込まれます。dは符号付き10進表記の整数であることを示します。2番目の引数34はフォーマット文字列%2$dにより整形されます。書式中の2は整形する引数の番号を示します。同一の引数が複数の書式の影響を受けることもあります。例えば、

format("%2$d -> %1$03d -> %2$d", 1, 34)

は次のような文字列に整形されます。

"34 -> 001 -> 34"

次の表は、書式文字列で使用できる書式オプションを示しています。

書式オプション 引数の型 変換後の書式
d, I int 符号付き10進表記
o int 符号なし8進表記(先行ゼロ付き)
x, X int 符号なし16進表記(先行0xまたは0Xなし)
0xの場合はabcdef、0Xの場合はABCDEFを使用
u int 符号なし10進表記
c int unsigned charに変換後の単一文字。
s char * ‘\ 0’に達するまで、または指定文字数が出力されるまで、文字列の文字を出力します。
f double [ - ] mmm.ddd形式の10進表記。ここで、dの数は精度で指定します。デフォルトの精度は6です。精度0を指定すると小数点が省略されます。
e, E double [ - ] m.dddddde [+ または - ] xx、または、[ - ] m.ddddddE [+ または - ] xx形式の10進表記。ここで、dの数は精度で指定します。 デフォルトの精度は6です。精度0を指定すると小数点が省略されます。
g, G double 指数が-4未満または指定精度以上の場合は%eまたは%Eが使用され、それ以外の場合は%fが使用されます。 末尾のゼロと末尾の小数点は印刷されません。

strfind(s, pattern [, init [, plain]])
文字列s中のパターンの最初の一致を探します。見つかった場合、strfindは、このパターン一致が開始および終了するsのインデックスを返します。それ以外の場合はnilを返します。パターンがキャプチャを指定しいた場合、キャプチャされた文字列が余分な結果として返されます。3番目のオプションの数値引数initは、検索を開始する場所を指定します。デフォルト値は1で、負の値であってもかまいません。4番目のオプションの引数plainとして1を指定すると、パターンマッチング機能がオフになります。このとき関数は単純な文字列比較を行い、パターン中に文字列が見つからない場合は“magic”とみなされます。

注: plainを指定する場合、initも指定する必要があります。 また、2つのバックスラッシュ(\\)は1つバックスラッシュ(\)として扱われます。

format("%2$d -> %1$03d -> %2$d", 1, 34)

・この資料の内容は予告なしに変更されることがあります。
・いかなる場合でも、この資料の内容およびその運用の結果に関しては一切の責任を負いません。
・この資料の一部または全部を無断で使用、作成することはできません。
All rights reserved by Vinas Co., Ltd.
sales@vinas.com