4D v16.3Position |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Position
|
Position ( find ; aString {; start {; lengthFound}}{; *} ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
find | 文字 |
![]() |
見つける文字列 | |||||
aString | 文字 |
![]() |
調べる文字列 | |||||
start | 倍長整数 |
![]() |
検索を開始する位置 | |||||
lengthFound | 倍長整数 |
![]() |
調べた文字列の長さ | |||||
* | 演算子 |
![]() |
渡されると、文字コードに基づいて評価 | |||||
戻り値 | 倍長整数 |
![]() |
最初に見つかった位置 | |||||
Position コマンドは、aStringの中でfindが最初に現われる位置を返します。
aStringの中にfindが見つからない場合は、Positionはゼロ(0) を返します。
findが見つかると、aStringの中に検索文字列が最初に表示された文字位置を返します。
空のstringに対して空のfindを指定すると、Position はゼロ(0) を返します。
デフォルトで、検索をaStringの最初の文字で開始します。任意のstart引数を使用して、aString中で検索を開始する文字位置を指定します。
lengthFound引数が渡されると、検索によって実際に見つかった文字列の長さを返します。この引数は、1つ以上の文字(例えばæとae、ßとss等) で書きこまれる文字を正確に表現するために必要となります。
* 引数が渡されたとき (以下参照) 、これらの文字は等しいと認識されない (æ # ae) ことに注意してください。このモードで、lengthFoundはいつもfindの長さと同じです (オカレンスが発見された場合)。
デフォルトでこのコマンドはグローバルな比較を行い、言語上の特性と、1つ以上の文字で記述される文字 (例 æ = ae) を考慮に入れます。他方、発音は区分せず (a=A, a=à 等) 、無視可能な文字は考慮されません (Unicodeの仕様)。無視可能な文字にはUnicodeのC0 Control サブセット (U+0000 ~ U+001F, Ascii制御文字セット) のすべての文字が含まれます (ただし印刷可能な文字 (U+0009 TAB, U+0010 LF, U+0011 VT, U+0012 FF そして U+0013 CR) は除きます。
この動作を変更するには、最後の引数にアスタリスク * を渡します。この場合、比較は文字コードベースで行われます。* 引数は以下のようなケースで必要となります:
このモードでは、単語が書かれた方法のバリエーションが評価されないことに留意してください。
注: 特定の場合において、 * 引数を使用することでコマンドの実行速度が格段に速くなる場合があります。
警告: Position に対して@ワイルドカード記号を使用することはできません。例えば、findに"abc@" を渡すと、このコマンドは"abc" で始まる文字ではなく、単なる文字として"abc@" を検索します。
Position関数の使用例を次に示します。結果を変数vlResultに代入します。コメントは、変数vlResultに代入される値についての説明です。
vlResult:=Position("ll";"Willow") ` vlResult gets 3
vlResult:=Position(vtText1;vtText2) ` Returns first occurrence of vtText1 in vtText2
vlResult:=Position("day";"Today is the first day";1) ` vlResult gets 3
vlResult:=Position("day";"Today is the first day";4) ` vlResult gets 20
vlResult:=Position("DAY";"Today is the first day";1;*) ` vlResult gets 0
vlResult:=Position("œ";"Bœuf";1;$length) ` vlResult =2, $length = 1
次の例ではlengthFound引数を使用して、テキスト中に現れるすべての"aegis" を検索します。
$start:=1
Repeat
vlResult:=Position("aegis";$text;$start;$lengthfound)
$start:=$start+$lengthfound
Until(vlResult=0)
プロダクト: 4D
テーマ: 文字列
番号:
15
変更: 4D v11 SQL
ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)