$WFIND (ObjectScript)
構文
$WFIND(string,substring,position)
$WF(string,substring,position)
引数
引数 | 説明 |
---|---|
string | 検索されるターゲット文字列。変数名、数値、文字列リテラル、または文字列に解決される有効な ObjectScript 式を指定できます。 |
substring | 検索される部分文字列。変数名、数値、文字列リテラル、または文字列に解決される有効な ObjectScript 式を指定できます。 |
position | オプション — 検索を開始するターゲット文字列内の位置。必ず正の整数を指定します。 |
説明
$WFIND は、文字列内の部分文字列の末尾位置を示す整数を返します。位置の計算では、各サロゲート・ペアは単一の文字としてカウントされます。$WFIND は $FIND と機能的に同じですが、$WFIND がサロゲート・ペアを認識する点が異なります。サロゲート・ペアを単一の文字として認識します。$WISWIDE 関数を使用して、文字列にサロゲート・ペアが含まれているかどうかを判断することができます。
サロゲート・ペアは、単一の Unicode 文字を一緒にエンコードする 16 ビットの InterSystems IRIS 文字要素のペアです。サロゲート・ペアは、中国語、日本語の漢字、韓国語のハンジャ文字で使用されている特定の表意文字を表すために使用されます (頻繁に使用される中国語、漢字、およびハンジャ文字は、標準 16 ビットの Unicode エンコードで表されます)。サロゲート・ペアにより、InterSystems IRIS は日本語 JIS X0213:2004 (JIS2004) エンコーディング標準および中国語 GB18030 エンコーディング標準をサポートします。
サロゲート・ペアは、16 進数の D800 ~ DBFF の範囲の高位 16 ビット文字要素と、16 進数の DC00 ~ DFFF の範囲の下位 16 ビット文字要素で構成されます。
$WFIND 関数は、サロゲート・ペアを単一の文字としてカウントします。$FIND 関数は、サロゲート・ペアを 2 文字としてカウントします。その他の点では、$WFIND と $FIND は機能的に同じです。ただし、$FIND は通常 $WFIND より高速なため、サロゲート・ペアが出現しない場合は常に $FIND が推奨されます。
部分文字列の検索の詳細は、$FIND 関数を参照してください。
例
以下の例は、$WFIND が戻り値の単一の文字としてサロゲート・ペアをカウントする方法を示します。
SET spair=$CHAR($ZHEX("D806"),$ZHEX("DC06"))
SET str="ABC"_spair_"DEF"
WRITE !,$FIND(str,"DE")," $FIND location in string"
WRITE !,$WFIND(str,"DE")," $WFIND location in string"
以下の例は、$WFIND で position 引数の単一の文字としてサロゲート・ペアをカウントする方法を示します。
SET spair=$CHAR($ZHEX("D806"),$ZHEX("DC06"))
SET str="ABC"_spair_"DEF"
WRITE !,$FIND(str,"DE",6)," $FIND location in string"
WRITE !,$WFIND(str,"DE",6)," $WFIND location in string"