与えられた文字列の部分文字列を返します。
$EXTRACT()関数のフォーマット:
$E[XTRACT](expr[,intexpr1[,intexpr2]])
式 (expr) は、$EXTRACT() が部分文字列を引き出すための元の文字列を指定します。
最初のオプションの整数式 (intexpr1)(第2引数)は、文字列の開始文字位置を指定します。もし開始位置が式の最後を超えている場合、$EXTRACT() は空の文字列を返します。もし開始位置がゼロ(0)または負の場合、$EXTRACT() は最初の文字から始まります; もしこの引数が省略された場合、$EXTRACT() は式の最初の文字を返します。$EXTRACT() は、数字文字の位置を1つ(1)から始まります(つまり、文字列の最初の文字はポジション1(1))。
2番目のオプションの整数式 (intexpr2)(第3引数)は、文字列の最終文字位置を指定します。もし最終位置が式の最後を超えている場合、$EXTRACT() は式の最後の文字で停止します。もし最終位置が開始位置より前にある場合、$EXTRACT() は空の文字列を返します。もしこの引数が省略された場合、$EXTRACT() は最大で1つの文字を返します。
$EXTRACT() は、文字位置に基づいて文字列を操作するためのツールを提供しています。
UTF-8 モードで起動するmumpsプロセスの場合、$EXTRACTは、UTF-8 エンコードのような文字列の引数を解釈します。VIEW "BADCHAR" が有効で、それはユニコード標準の予約された範囲で文字を見つけた時 $EXTRACT() は実行時エラーを生成しますが、それは引数によって指定された範囲の後に入る文字を処理しません。$EXTRACT() の平行して動作が可能な関数が$ZEXTRACT()です。バイト指向の操作では$ZEXTRACT() を使用してください。詳細な情報については、 “$ZExtract()” を参照してください。
$EXTRACT() は、文字列の部分文字列をセットするために SETコマンドの等号 (=) の左側に使用することができます。この構文は、文字列内のそれぞれの部分を容易にメンテナンスが可能です。空白文字で埋められた値を右側に整えるために使用することができます。 SET $EXTRACTの詳細については、コマンドの章の “Set”を参照してください。
例:
GTM>for i=0:1:3 write !,$extract("HI",i),"<" < H< I< < GTM>
このループは、1番目と2番目の位置の"前"と文字列の"後"に、終了文字の位置と最初の文字位置を指定していない $EXTRACT() の結果を表示します。
例:
GTM>For i=0:1:3 write !,$extract("HI",1,i),"<" < H< HI< HI< GTM>
このループは、1番目と2番目の位置の"前"と文字列の"後"に、開始文字の位置の 1 と最終の文字位置を指定されている $EXTRACT() の結果を表示します。
例:
GTM>zprint ^trim trim(x) new i,j for i=1:1:$length(x) quit:" "'=$extract(x,i) for j=$length(x):-1:1 quit:" "'=$extract(x,j) quit $extract(x,i,j) GTM>set str=" MUMPS " GTM>write $length(str) 7 GTM>write $length($$^trim(str)) 5 GTM>
この外部関数は、その引数から余分な先頭と末尾のスペースを削除するには、$EXTRACT() を使用しています。