ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
Position
|
Position ( find ; aString {; start {; lengthFound}}{; *} ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
find | 文字 |
![]() |
見つける文字列 | |||||
aString | 文字 |
![]() |
調べる文字列 | |||||
start | 倍長整数 |
![]() |
aString引数内で検索を開始する位置 | |||||
lengthFound | 倍長整数 |
![]() |
見つかった文字列の長さ | |||||
* | 演算子 |
![]() |
渡されると、文字コードに基づいて評価 | |||||
戻り値 | 倍長整数 |
![]() |
最初に見つかった位置 | |||||
Position ( find ; aString ; start ; lengthFound ; options ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
find | 文字 |
![]() |
見つける文字列 | |||||
aString | 文字 |
![]() |
調べる文字列 | |||||
start | 倍長整数 |
![]() |
aString引数内で検索を開始する位置 | |||||
lengthFound | 倍長整数 |
![]() |
見つかった文字列の長さ | |||||
options | 倍長整数 |
![]() |
検索条件 | |||||
戻り値 | 倍長整数 |
![]() |
最初に見つかった位置 | |||||
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) は除きます。
この動作を変更するには、シンタックスに応じて以下のものを渡してください:
定数 | 値 | コメント |
sk case insensitive | 2 | 文字列は、カレントのデータ言語設定に応じて比較され、大文字/小文字の差異は考慮されません。ただしアクセント記号は考慮されるという点に注意してください。例えば、"A" と"a" は同じとみなされますが、"a" は"à" とは違うとみなされます。デフォルトでは、4Dの文字列比較は大文字と小文字を区別しません。 これは以下の定数と組み合わせ可能です:
この定数は、暗示的に以下の定数を使用します(可読性向上のために組み合わせることも可能です):
|
sk char codes | 1 | 文字列は文字コードに基づいて比較されます。カレントのデータ言語設定は比較の際には考慮されません。
これは以下の定数と組み合わせ可能です: sk case insensitive これは"a-z" または "A-Z" のレンジのみ使用可能です(例: Alpha = alpha、しかし Alpha # âlphà) |
sk diacritic insensitive | 4 | 文字列は、カレントのデータ言語設定に応じて比較されますが、文字のアクセント記号(アクセントや記号など)は無視されます。例えば、"a" は"à" と同じとみなされます。 これは以下の定数と組み合わせ可能です:
この定数は、暗示的に以下の定数を使用します(可読性向上のために組み合わせることも可能です):
|
sk kana insensitive | 8 | 日本語のみ。ひらがな文字とカタカナ文字の区別をコントロールします。意味合いを考える場合には、一般的にはひらがなとカタカナの差異は大きいものですが、より多くの結果を検索で見つけるために、4D ではデフォルトではこの差異を無視するように(kana insensitive に)設定されています。例えば、"あ" は"ア" と同じとみなされます。sk strict オプションはひらがなとカタカナを区別する比較を実行します。sk kana insensitive を使用するとひらがなとカタカナを同一視するようにルールを一部緩和させることができます。
これは以下の定数と組み合わせ可能です:
この定数は、暗示的に以下の定数を使用します(可読性向上のために組み合わせることも可能です):
|
sk strict | 0 | 文字列は、カレントのデータ言語設定の基づいて完全一致するかどうかに応じて比較されます。多くの場合、大文字/小文字、アクセント記号の有無は比較の際に考慮されます(違う文字とみなされます)。
これは以下の定数と組み合わせ可能です:
この定数は、暗示的に以下の定数を使用します(可読性向上のために組み合わせることも可能です):
|
sk whole word | 32 | 文字列は、カレントのデータ言語設定に基づいて比較されます。完成された単語全体が文字列として考慮されます。例えば、"where" は"somewhere" 内に含まれているのが見つかった場合は同じとはみなされません。 |
sk width insensitive | 16 | 日本語のみ。Unicode Standard Annex #11 に定義されているUnicode 標準の「東アジアの文字幅」に対応します。意味合いを考える場合には、文字の"全角"と"半角"(あるいは"狭い"と"広い")の差異は一般的にはあまり大きくなく、そのため4D でもデフォルトではこのモードが採用されています。例えば、"ア" は"ア" と同じであるとみなされます。
注:
これは以下の定数と組み合わせ可能です:
この定数は、暗示的に以下の定数を使用します(可読性向上のために組み合わせることも可能です):
|
データ言語の定義に関する情報については、デザインリファレンスの の章を参照してください。
警告: 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)
以下の例題では、ある文字列を全て見つけて、それを置き換える場合を考えます:
var $lengthFound : Integer
$string:="Hello Joelle et joel!"
$find:="joel"
$replace:="Joël"
$option:=sk case insensitive+sk diacritic insensitive
$p:=0
Repeat
$p:=Position($find;$string;$p+1;$lengthFound;$option)
If($p>0)
$string:=Substring($string;1;$p-1)+$replace+Substring($string;$p+$lengthFound)
End if
Until($p<=0) // 戻り値: $string -> Hello Joëlle and Joël!
プロダクト: 4D
テーマ: 文字列
番号:
15
変更: 4D v11 SQL
変更: 4D v18 R6
ランゲージリファレンス ( 4D v20 R7)