【发布时间】:2015-03-21 18:18:53
【问题描述】:
是否可以为 Javascript 创建自定义 Intl.Collator 对象?假设我有:
var letters = [ "a", "n", "ñ", "x" ]
如果我对它们进行排序,ñ 默认会走到最后:
letters.sort() // [ "a", "n", "x", "ñ" ]
但是,使用新的Intl.Collator,我可以这样做:
letters.sort(Intl.Collator('es').compare)
按西班牙语 (es) 规则排序,并将 ñ 放在 n 之后。
[ "a", "n", "ñ", "x" ]
现在,假设出于某种原因我想自己写一个Collator,那会把ñ 放在第一位?
[ "ñ", "a", "n", "x" ]
我找不到任何有关为 Intl.Collator 自定义新规则集的信息。
这可能吗?
更新
是的,有可能。
更新:
我在 ECMAscript i18n 标准2 中找到了有关如何创建自定义语言环境的建议:
function MyCollator(locales, options) {
Intl.Collator.call(this, locales, options);
// initialize MyCollator properties
}
MyCollator.prototype = Object.create(Intl.Collator.prototype);
MyCollator.prototype.constructor = MyCollator;
// add methods to MyCollator.prototype
var collator = new MyCollator("de-u-co-phonebk");
a.sort(collator.compare);
【问题讨论】:
-
您想为任意符号定义任意顺序吗?
-
我最近为此类问题创建了一个新的ecmascript-intl,但我不想假设它应该替换您当前的哪个标签。如果您愿意,请使用它。
-
谢谢@hippietrail,我已经添加了。
标签: javascript unicode internationalization collation ecmascript-intl