JavaScript

Intl.Collator() コンストラクター


編集:2023.01.20 by T.A.

[Edge]。→

言語を考慮した文字列の比較を可能にする Intl.Collator オブジェクトを生成して返します。

構文
new Intl.Collator([locales[, options]])
locales 省略可 言語タグの文字列、またはそのような文字列の配列。→Intl:locales

defalt、空配列「[]」でローカル システムの初期値?。

次の Unicode 拡張キーが使用可能です。

これらのキーは options でも設定することができます。両方で設定されている場合、options のプロパティが優先されます。

co
比較方法の変化形を表す文字列。→collation
kn
数字を数値として扱うかどうかを表す文字列。→numeric
kf
大文字・小文字のどちらが検索上で先なのかを表す文字列。→caseFirst
options 省略可。以下のプロパティを1つ以上持つオブジェクト。
localeMatcher
比較に使用するアルゴリズムを表す文字列。値は以下の何れか。
lookup
best fit 既定値。

Intl:マッチング アルゴリズム

usage
比較の目的を示す文字列。値は以下の何れか。
sort ソートのため。(既定値)
search 一致する文字列検索のため。
sensitivity
文字の違いをどの程度まで区別するかを表す文字列。値は以下の何れか。
base ベース文字が異なれば、異なる文字であると評価します。

例: a ≠ b、a = á、a = A

accent ベース文字が異なるか、またはアクセントその他の発音区別符号が異なれば、異なる文字であると評価します。

例: a ≠ b、a ≠ á、a = A

case ベース文字が異なるか、ベース文字が同一でも大文字小文字が異なれば、異なる文字であると評価します。

例: a ≠ b、a = á、a ≠ A

variant ベース文字、アクセントその他の発音区別符号、および大文字小文字のいずれかが異なれば、異なる文字であると評価します。他の違いも考慮されるかもしれません。

例: a ≠ b、a ≠ á、a ≠ A

既定値は、usage が "sort" の場合は "variant" で、"search" の場合はロケールに依存する。

ignorePunctuation
句読点を無視する(含めない)かどうかを表す論理値。値は以下の何れか。
true 句読点を無視する。
false 句読点を無視しない。(既定値)
numeric
比較で数字を数値として扱うかどうかを表す論理値。値は以下の何れか。
true 数値として比較する。
false 文字コードで比較する。既定値

Unicode 拡張キーの kn からも利用できます。両方指定された場合は options での設定が優先されます。

caseFirst
大文字・小文字のどちらが検索上で先なのかを表す文字列。値は以下の何れか。
upper 大文字が先。
lower 小文字が先。
false ロケールの既定の動作。論理値でOKなようです。

Unicode 拡張キーの kf からも利用できます。

collation
比較方法の変化形の指定を表す文字列。値は以下の何れか。→
big5han ラテン文字はピンイン順、漢字は big5 文字セット順(中国語向け)。[Edge]⛌、[Chrome]⛌
compat 前の版の順序で、互換性のため(アラビア語向け)
dict 辞書形式の順序(シンハラ語向け)
direct バイナリコードポイント順

mdn: 警告: 非推奨です。使用しないでください。

ducet 既定の Unicode 照合順で、要素表順

mdn: "ducet" 照合種別はウェブでは利用できません。代わりに "und" ロケールを照合種別指定子なしで使用してください。"und" は DUCET に最も近い照合種別です。

emoji 絵文字に推奨される順序("und" ロケール向け)
eor ヨーロッパ語の順序の規則("und" ロケール向け)
gb2312 ラテン文字はピンイン順、漢字は gb2312han 文字セット順(中国語向け)。[Edge]⛌、[Chrome]⛌
phonebk 電話帳形式の順序(ドイツ語向け)
phonetic 発音順(発音に基づく順序、リンガラ語向け)
pinyin ラテン文字と漢字はピンイン順(中国語向け)
reformed リフォーム順(スウェーデン語向け)

mdn: 注: これは、2022 年 5 月現在、スウェーデン語の既定の順序ですが、照合順序の名前が異常です。これは既定値なので、 "sv-u-co-reformed" をリクエストするのではなく、"sv" をリクエストしてください。

search 文字列検索のための特殊な照合種別

mdn: 警告: 使用しないでください。Intl.Collator ではこの照合種別は "usage" オプションで "search" の値を設定すると有効になります。さらに、この照合を検索で使用する API は今のところありません。

searchjl 韓国語の頭文字子音検索用の特殊な照合種別
standard 各言語の既定の照合順。ただし、中国語と、2022 年 5 月時点ではスウェーデン語を除きます。

mdn: 警告: 明示的に使用しないでください。一般に、明示的に指定する必要はありません。また、スウェーデン語に対してこれを指定すると、将来、スウェーデン語の照合順序の命名が他の言語と整合するように変更された場合に問題があります。

stroke ラテン文字はピンイン順、漢字は画数順(中国語向け)
trad 歴史的なスタイルの順序(スペイン語など)
unihan 漢字の部首の画数順(中国語、日本語、韓国語向け)。 中国語の場合はラテン文字はピンイン順。[Edge]⛌、[Chrome]⛌
zhuyin ラテン語はピンイン順、ボポモフォと漢字は竹簡順(中国語向け)

Unicode 拡張キーの co からも利用できます。

DA=new Intl.Collator('ja-JP-u-kn-true');  //数字を数値として比較。
D=DA.compare('10', '2');  //=[number]:1
DA=new Intl.Collator('ja-JP-u-kn-false');  //数字を文字コードで比較。
D=DA.compare('10', '2');  //=[number]:-1。「10」が「2」の前にくる。
DA=new Intl.Collator('ja-JP', {numeric:true});  //数字を数値として比較。
D=DA.compare('10', '2');  //=[number]:1
DA=new Intl.Collator('ja-JP', {numeric:false});  //数字を文字コードで比較。
D=DA.compare('10', '2');  //=[number]:-1。「10」が「2」の前にくる。

DA=new Intl.Collator('ja-JP-u-kf-upper');  //大文字優先。
D=DA.compare('A', 'a');  //=[number]:-1
DA=new Intl.Collator('ja-JP', {caseFirst:'upper'});  //大文字優先。
D=DA.compare('A', 'a');  //=[number]:-1

DA=new Intl.Collator('ja-JP', {ignorePunctuation:true});  //句読点を無視する。
D=DA.compare('a.b', 'ab');  //=[number]:0

DA=new Intl.Collator('ja-JP', {sensitivity:'base'});  //区別:ベース文字が異なれば、異なる文字であると評価する。
D=DA.compare('a', 'A');  //=[number]:0

DA=new Intl.Collator('ja-JP', {usage:'sort'});  //ソートのための比較。
D=DA.compare('a', 'A');  //=[number]:-1。¶?
DA=new Intl.Collator('ja-JP', {usage:'search'});  //検索のための比較。
D=DA.compare('a', 'A');  //=[number]:-1。¶?

Intl.Collator.compare()


テスト