Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$FIND

値により部分文字列を検索し、文字列の最終位置を指定する整数を返します。

Synopsis

$FIND(string,substring,position)
$F(string,substring,position)

パラメータ

string 検索されるターゲット文字列。変数名、数値、文字列リテラル、または文字列に解決される有効な ObjectScript 式を指定できます。
substring 検索される部分文字列。変数名、数値、文字列リテラル、または文字列に解決される有効な ObjectScript 式を指定できます。
position オプション — 検索を開始するターゲット文字列内の位置。必ず正数になります。

説明

$FIND は、文字列内の部分文字列の末尾位置を示す整数を返します。$FIND は、stringsubstring を検索します。$FIND は、大文字と小文字を区別します。substring が見つかると、$FINDsubstring に続く最初の文字の位置を整数で返します。substring が見つからなければ、$FIND は 0 の値を返します。

$FIND は、substring に続く文字の位置を返すため、substringstring の最初の文字に一致する 1 つの文字である場合、$FIND は 2 を返します。substring が NULL 文字列 ("") である場合、$FIND は 1 を返します。

position オプションを使用して、検索の開始位置を指定できます。position 値が string 内の文字数よりも大きい場合、$FIND は 0 の値を返します。

$FIND は、バイトではなく、文字をカウントします。したがって、8 ビットまたは 16 ビット (Unicode) 文字を含む文字列で使用できます。Caché Unicode サポートの詳細は、"Caché ObjectScript の使用法" の "Unicode" を参照してください。

例えば、変数 var1 が文字列 “ABCDEFG”、変数 var2 が文字列 "BCD" を含む場合、以下の $FINDvar2 文字列に続く文字 ("E") の位置を示す値 5 を返します。

   SET var1="ABCDEFG",var2="BCD"
   WRITE $FIND(var1,var2)

以下の例は、部分文字列 "FOR" のすぐ右にある文字位置 4 を返します。

   SET X="FOREST"
   WRITE $FIND(X,"FOR")

以下の例では、$FINDstring に含まれていない部分文字列、NULL サブ文字列、および string の最初の文字であるサブ文字列を検索します。例では、それぞれ 0、1、および 2 が返されます。

   WRITE !,$FIND("aardvark","z")  ; returns 0
   WRITE !,$FIND("aardvark","")   ; returns 1
   WRITE !,$FIND("aardvark","a")  ; returns 2

以下の例は、 string が NULL 文字列である場合に何が起こるかを示しています。

   WRITE !,$FIND("","z")  ; returns 0
   WRITE !,$FIND("","")   ; returns 1

次の例は、X の 7 番目の文字の後で、最初に "R" が現れる位置のすぐ右の文字位置 14 を返します。

   SET X="EVERGREEN FOREST",Y="R"
   WRITE $FIND(X,Y,7)

以下の例では、$FIND は文字列の最後の文字の後から、検索を開始します。結果として 0 を返します。

   SET X="EVERGREEN FOREST",Y="R"
   WRITE $FIND(X,Y,20)

以下の例では、$FIND$REVERSE と共に使用して、文字列の最後から検索操作を実行します。この例では、テキスト行内の最後の検索対象文字列が検出され、その文字列の位置として 33 が返されます。

   SET line="THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG."
   SET position=$LENGTH(line)+2-$FIND($REVERSE(line),$REVERSE("THE"))
   WRITE "The last THE in the line begins at ",position

次の例は、名前の間接指定を使用して部分文字列 "THIS" のすぐ右の文字位置 6 を返してます。

   SET Y="x",x="""THIS IS A TEST"""
   WRITE $FIND(@Y,"THIS")

詳細は、"Caché ObjectScript の使用法" の "間接演算" を参照してください

メモ

$FIND、$EXTRACT、$PIECE、および $LIST

  • $FIND は、値により部分文字列を検索し、位置を返します。

  • $EXTRACT は、位置により部分文字列を検索し、部分文字列の値を返します。

  • $PIECE は、区切り文字または区切り文字列により部分文字列を検索し、部分文字列の値を返します。

  • $LIST は、特別にエンコードされた文字列を操作します。文字列のカウントにより部分文字列を検索し、部分文字列の値を返します。

$FIND$EXTRACT$LENGTH、および $PIECE 関数は、標準の文字列を操作します。さまざまな $LIST 関数は、エンコードされた文字列を操作します。この文字列は、標準の文字列とは互換性がありません。唯一の例外は、入力値としてエンコードされた文字列を取りながら、標準の文字列として 1 つの要素の値を出力する、$LIST の 1-引数形式と 2-引数形式です。

サロゲート・ペア

$FIND は、サロゲート・ペアを認識しません。サロゲート・ペアは、一部の中国語の文字を表示したり、日本語の JIS2004 標準をサポートするために使用されます。$WISWIDE 関数を使用して、文字列にサロゲート・ペアが含まれているかどうかを判断することができます。$WFIND 関数は、サロゲート・ペアを認識して、正しく解析します。$FIND$WFIND は、それ以外は同一です。 ただし、$FIND は通常 $WFIND より高速なため、サロゲート・ペアが出現しない場合は常に $FIND が推奨されます。

関連項目

FeedbackOpens in a new tab