version 11 (Modified)
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つ以上の文字(例えばaとae、sとss等) で書きこまれる文字を正確に表現するために必要となります。
* 引数が渡されたとき (以下参照) 、これらの文字は等しいと認識されない (a # ae) ことに注意してください。このモードで、lengthFoundはいつもfindの長さと同じです (オカレンスが発見された場合)。
デフォルトでこのコマンドはグローバルな比較を行い、言語上の特性と、1つ以上の文字で記述される文字 (例 a = ae) を考慮に入れます。他方、発音区分符号 (a=A, a=a 等) 無視され、改行などの制御コードは考慮されません (Unicodeの仕様)。
この動作を変更するには、最後の引数にアスタリスク * を渡します。この場合、比較は文字コードベースで行われます。* 引数は以下のようなケースで必要となります:
・改行やChar(1)など特別な文字を考慮に入れたい場合、
・文字の評価で大文字小文字の区別やアクセント文字を考慮したい場合 (a#A, a#a 等)。
このモードでは、単語が書かれた方法のバリエーションが評価されないことに留意してください。
警告: Position関数に対して@ワイルドカード記号を使用することはできません。例えば、findに"abc@" を渡すと、このコマンドは"abc" で始まる文字ではなく、単なる文字として"abc@" を検索します。
例題
1. Position関数の使用例を次に示します。結果を変数vlResultに代入します。コメントは、変数vlResultに代入される値についての説明です。
vlResult := Position ("ll"; "Willow") `vlResultは3
vlResult := Position (vtText1; vtText2) `vtText2の中で vtText1 の文字列が見つかった位置が返る
vlResult := Position ("day"; "Today is the first day";1) ` vlResultは3
vlResult := Position ("day"; "Today is the first day";4) ` vlResultは20
vlResult := Position ("DAY"; "Today is the first day";1;*) ` vlResultは0
2. 次の例ではlengthFound引数を使用して、テキスト中に現れるすべての"aegis" を検索します。
$start:=1
Repeat
vlResult := Position ("aegis";$text;$start;$lengthfound)
$start:= $start+$lengthfound
Until(vlResult =0)
参照