4D言語 – 文字列比較の改良

Deeplからの自動翻訳

4D言語には、文字列を扱うための20以上のコマンドが用意されています。そして、4D v18 R6で、4Dは新しいコマンドを導入しました。Compare strings.また、さらに別のコマンドも改良されました:Position.これらのコマンドは両方とも、より正確な結果を得るためにオプションを使用することができます。もっと学びましょう。

HDI: 文字列の比較の改良。

位置

よく知られたコマンドであるPosition は、他のテキスト内のテキストの位置を検索することができます。このコマンドには、開始位置と、文字コードに基づく完全一致の2つのオプションしかありません。4D v18 R6では、「大文字小文字を区別する」「アクセントを区別する」など、より多くの比較の可能性があります。日本語も忘れてはいません!ひらがな・カタカナ、文字幅も検索オプションとして用意されています。また、「単語全体」を検索するオプションもあります。

では、最初から見ていきましょう。

最初のオプションは「厳密」です。これは、大文字、アクセントなどのほか、言語の特異性を考慮したものです。例えばドイツ語では、「ß」は「ss」と同じと仮定することができます。フランス語では、œとæは、oeとaeに相当します。

その他のオプションは、それ自体で説明できます。”case insensitive” と “accent insensitive” は、アクセントと大文字を無視することができます。日本語の場合、”kana insensitive “はカタカナとひらがなの違いを無視し、”width insensitive “は文字幅を無視する。

最後の(非常に便利な)オプションは、単語の一部を無視して完全な(全体の)単語だけを検索することができます。

いくつかの例を挙げる。

$p:=Position ("home"; "I have done my homework";0;$length;sk whole word")
// returns zero ! home is not a whole word in this case.

$p:=Position ("home"; "I have done my homework";0;$length;sk case insensitive")
// returns 16; the capital "H" is considered equal to letter "h"

$p:=Position ("Joao"; "I have a friend named João";0;$length;sk accent insensitive")
// returns 23; the accentuated letter "ã" is considered equal to letter "a"

これらのオプションは累積することができます

$p:=Position ("joao"; "I have a friend named João";0;$length;sk case insensitive +sk accent insensitive")
// also returns 23; the accentuated letter "ã" is considered equal to letter "a" AND letter "J" is considered equal to letter "j"

文字列の比較

新しいCompare strings コマンドは、Position コマンドに追加されたものと同じオプションで文字列を比較することができます。このコマンドは、データベースの設定で定義された言語に基づいています。これは、例えば、特定のソートを可能にするために、本当に便利です。

このコマンドは以下を返します。

  • 文字列が (オプションとして渡された基準に基づいて) 同一であるとみなされた場合は、0 を返します。
  • 最初の文字列が二番目の文字列の前あるいは後にソートされる場合は、 負の値あるいは正の値を返します。

いくつかの例を示します。

下の例では、”a “は “A “よりも大きいとみなされるため、$resultは “1 “を返します。大きさではなく、文字コードによってです!
注意:sk char code では、比較は言語に依存しない。

$result:=Compare strings("アルファ"; "Alpha";sk char codes)

今回、$result は “0” を返します。これは、sk case insensitive オプションのおかげで、小文字と大文字を同一と見なす必要があるためです。
注意:sk case insensitive 、比較は言語に依存する。

$result:=Compare strings("a tree"; "木";sk case insensitive)

まとめ

上記のHDIを見て、これらの新しいオプションがどのように使用できるかを見てみましょう。

もし、データの特定の検索やソートを管理する必要があるのなら、きっととても役に立つだろう。これらのコマンドの詳細については、ドキュメント「文字列の比較と 位置」を参照してください。

また、4Dフォーラムでの議論にもぜひご参加ください。

Roland Lannuzel
- プロダクトオーナー&4Dエキスパート -電子工学を学んだ後、産業用ITの分野で開発者兼コンサルタントとして、さまざまなデータベースやテクノロジーを使って顧客のためのソリューションを構築。80年代後半に4Dに惚れ込み、会計、請求書作成、メールシステムなどのビジネスアプリケーションの作成に4Dを使用してきました。現在も、新機能やデータベース開発ツールの定義など、4Dの未来を積極的に切り開いています。