$FIND(string,substring,position)
$F(string,substring,position)
説明
$FIND は、文字列内の部分文字列の末尾位置を示す整数を返します。$FIND は、string で substring を検索します。$FIND は、大文字と小文字を区別します。substring が見つかると、$FIND はsubstring に続く最初の文字の位置を整数で返します。substring が見つからなければ、$FIND は 0 の値を返します。
$FIND は、substring に続く文字の位置を返すため、substring が string の最初の文字に一致する 1 つの文字である場合、$FIND は 2 を返します。substring が NULL 文字列 ("") である場合、$FIND は 1 を返します。
position オプションを使用して、検索の開始位置を指定できます。position 値が string 内の文字数よりも大きい場合、$FIND は 0 の値を返します。
$FIND は、バイトではなく、文字をカウントします。したがって、8 ビットまたは 16 ビット (Unicode) 文字を含む文字列で使用できます。InterSystems IRIS Unicode サポートの詳細は、"ObjectScript の使用法" の "Unicode" を参照してください。
例
例えば、変数 var1 が文字列 “ABCDEFG”、変数 var2 が文字列 "BCD" を含む場合、以下の $FIND は var2 文字列に続く文字 ("E") の位置を示す値 5 を返します。
SET var1="ABCDEFG",var2="BCD"
WRITE $FIND(var1,var2)
以下の例は、部分文字列 "FOR" のすぐ右にある文字位置 4 を返します。
SET X="FOREST"
WRITE $FIND(X,"FOR")
以下の例では、$FIND は string に含まれていない部分文字列、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 JUMPS 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")
詳細は、"ObjectScript の使用法" の "間接演算" を参照してください。