4D v19Compare strings |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19
Compare strings
|
Compare strings ( aString ; bString {; options} ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
aString | 文字 |
![]() |
比較する文字列 | |||||
bString | 文字 |
![]() |
比較する文字列 | |||||
options | 倍長整数 |
![]() |
比較ルール | |||||
戻り値 | 倍長整数 |
![]() |
文字列比較の結果 | |||||
Compare strings コマンドは、aString 引数の文字列がbString 引数の文字列比較して低い/等しい/高いと評価されるかによって負の値/ゼロ/正の値を返します。
aString 引数にはtext 型の値を渡します。
bString 引数には、aString 引数と比較するtext 型の値を渡します。
デフォルトで、Compare strings コマンドは"<" (未満) 演算子が使用されたのと同じように振舞います(String operators を参照)。この振る舞いはoptions 引数を使用することで変更可能です。Strings テーマ内の、以下の定数のいづれか一つまたは組み合わせを渡すことができます:
定数 | 値 | コメント |
sk case insensitive | 2 | 文字列は、カレントのデータ言語設定に応じて比較され、大文字/小文字の差異は考慮されません。ただしアクセント記号は考慮されるという点に注意してください。例えば、"A" と"a" は同じとみなされますが、"a" は"à" とは違うとみなされます。 これは以下の定数と組み合わせ可能です:
|
sk char codes | 1 | 文字列は文字コードに基づいて比較されます。カレントのデータ言語設定は比較の際には考慮されません。
これは以下の定数と組み合わせ可能です: sk case insensitive これは"a-z" または "A-Z" のレンジのみ使用可能です(例: Alpha = alpha、しかし Alpha # âlphà) |
sk diacritic insensitive | 4 | 文字列は、カレントのデータ言語設定に応じて比較されますが、文字のアクセント記号(アクセントやウムラウトなど)は無視されます。例えば、"a" は"à" と同じとみなされます。
これは以下の定数と組み合わせ可能です:
|
sk kana insensitive | 8 | 日本語のみ。文字列は、カレントのデータ言語設定内での読みに基づいて比較されます(ただしひらがな/カタカナなどの表記は考慮されません)。例えば、"あ"は"ア"と同じとみなされます。 このオプションが設定されている場合、sk width insensitive も暗示的に設定されます(セットとみなされます)が、逆はセットになりません。
これは以下の定数と組み合わせ可能です:
|
sk strict | 0 | 文字列は、カレントのデータ言語設定の基づいて完全一致するかどうかに応じて比較されます。多くの場合、大文字/小文字、アクセント記号の有無は比較の際に考慮されます(違う文字とみなされます)。
これは以下の定数と組み合わせ可能です:
|
sk width insensitive | 16 | 日本語のみ。文字列は、カレントのデータ言語設定内で異なる文字幅でも同じとみなされます。例えば、"ア"は"ア"と同じであるとみなされます。
これは以下の定数と組み合わせ可能です:
|
データ言語の定義の詳細な情報については、デザインリファレンスのテキスト比較 の章を参照してください。
警告: Compare strings では@ のワイルドカード文字を使用することはできません。例えば、aString または bString 引数"abc@" にを渡した場合、コマンドは"abc@" という文字列を評価し、"abc" という文字列とそれに続く何らかの文字、という解釈はしません。
返される値
コマンドは以下のlongint 型の値のいずれかを返します:
値 | 詳細 |
-1 | aString はbString の前である(aString の方が低い) |
0 | aString はbString と等しい |
1 | aString はbString の後である(aString の方が高い) |
以下の文字列を比較したい場合を考えます:
$string1:="alpha Bravo charlie Delta Echo Fox-Trot"
$string2:="Alpha Bravo Charlie Delta Echo Fox-Trot"
// 文字コードを使用して文字列を比較する
$result:=Compare strings($string1;$string2;sk char codes)
// $result = 1
// 文字コードを使用して文字列を比較するが、大文字/小文字の違いは無視する
$result:=Compare strings($string1;$string2;sk char codes+sk case insensitive)
// $result = 0
以下の例題はデータ言語が日本語のコンテキストにおけるこのオプションの特定の振る舞いについて説明しています:
// デフォルトはひらがなとカタカナを区別しない(kana insensitive)
$result:=Compare strings("イロハ";"いろは") // 同じであるとみなされる
$result:=Compare strings("イロハ";"いろは";sk strict) // 異なるとみなされる
$result:=Compare strings("イロハ";"いろは";sk kana insensitive) // 同じであるとみなされる
// デフォルトは大文字と小文字("つ"と"っ"など)を区別しない(case insensitive)
$result:=Compare strings("さつき";"さっき") // 同じであるとみなされる
$result:=Compare strings("さつき";"さっき";sk strict) // 異なるとみなされる
$result:=Compare strings("さつき";"さっき";sk case insensitive) // 同じであるとみなされる
// データ言語が日本語に設定されている場合には、記号(濁点など)の有無を区別する(diacritic sensitive)、これは他の言語設定と異なる
$result:=Compare strings("ete";"été") // データ言語が日本語以外に設定されている場合には同じとみなされる
$result:=Compare strings("ete";"été") // データ言語が日本語に設定されている場合には異なるとみなされる
$result:=Compare strings("うがい";"うかい") // 異なるとみなされる
$result:=Compare strings("うがい";"うかい";sk strict) // 異なるとみなされる
$result:=Compare strings("うがい";"うかい";sk diacritic insensitive) // 同じであるとみなされる
注: "テキスト検索用の文字列比較を使用する"オプション(テキスト比較参照)はCompare strings コマンドに影響があります。具体的には、"カタカナ-ひらがなの長音記号"の解釈の仕方が異なります。またこの設定は"ゝ"または"ゞ"などの日本語の繰り返し記号(踊り字)にも影響があります。例:
$result:=Compare strings("いすず";"いすゞ") // オプションが無効化されている場合には同じとみなされる
$result:=Compare strings("いすず";"いすゞ") // オプションが有効化されている場合には異なるとみなされる
$result:=Compare strings("ラーメン";"ラーメン") // オプションが有効化されている場合には同じとみなされる
$result:=Compare strings("ラーメン";"ラアメン") // オプションが無効化されている場合には異なるとみなされる
プロダクト: 4D
テーマ: 文字列
番号:
1756
初出: 4D v18 R6
ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)