强制区域设置比较区分大小写
Force localeCompare to be case-sensitive
我正在尝试使用JavaScript的localeCompare函数对字符串进行排序。
我对在devTools控制台中运行以下行的结果感到惊讶:
"a".localeCompare("b") // returns: -1
"A".localeCompare("b") // returns: -1
另一个测试:
"b".localeCompare("a") // returns: 1
"B".localeCompare("a") // returns: 1
即使我对我的排序更具体,我也得到相同的结果:
"a".localeCompare("b", { usage: "sort", sensitivity: 'variant' }) // -1
"A".localeCompare("b", { usage: "sort", sensitivity: 'variant' }) // -1
"b".localeCompare("a", { usage: "sort", sensitivity: 'variant' }) // 1
"B".localeCompare("a", { usage: "sort", sensitivity: 'variant' }) // 1
我想使用 localeCompare 以区分大小写的方式比较字符串,那么与"a"相比的"b"和与"a"相比的"B"不应该有相反的结果吗?
LocalCompare 可以区分大小写,由 { sensitivity: 'case'}
或 unicode 扩展名启用:u-kf-upper
或 u-kf-lower
。
LocalCompare的规范说:
结果旨在按排序顺序对字符串值进行排序 由系统默认区域设置指定
或者可以添加为参数的区域设置。
区分大小写的顺序的 en-US 默认值为"较低",如下所示:
aAbBcC ...
您可以将其更改为"上层",即:
AaBbCc ...
该测试表明,从upper
切换到lower
只影响同一个字母,并且不会在小写之前对大写字母进行排序,反之亦然。
var b = "A".localeCompare("a", 'en-US-u-kf-lower'); // 1
var c = "A".localeCompare("a", 'en-US-u-kf-upper'); // -1
var d = "A".localeCompare("b", 'en-US-u-kf-upper'); // -1
var e = "A".localeCompare("b", 'en-US-u-kf-lower'); // -1
- 可能有一个区域设置对大写/小写进行不同的排序,但我不知道有任何......
- 国际排序顺序不区分大小写
- ASCII 排序顺序将
ACb
- 有些语言环境有不同的顺序:例如芬兰语 像 W:
Va Wb Vc
...
区分大小写是否以任何方式影响数值?
var b = "1".localeCompare("a", 'en-US-u-kf-lower'); // -1
var c = "1".localeCompare("A", 'en-US-u-kf-upper'); // -1
var d = "104".localeCompare("a", 'en-US-u-kf-upper'); // -1
不,但是...
有一个选项,如何比较数值:kn
使用选项或Unicode扩展名kn
可以启用数字比较(kn-true
):
var b = "10".localeCompare("2", 'en-US-u-kn-true'); // 1
var c = "10".localeCompare("2", 'en-US'); // -1
但是,数字总是在字母之前:
var d = "1".localeCompare("a", 'en-US-u-kn-true'); // -1
var e = "1".localeCompare("a", 'en-US'); // -1
相关文章:
- 比较从函数和生成的日期对象
- 如何使用 node.js 比较两个 json 数组
- jQuery自定义验证比较多个输入的序列
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 反向字符串比较
- 通过JSON&比较时间
- 将DOM节点值与字符串Javascript进行比较
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- DOM元素和angular元素之间的主要区别是什么
- 递归深度比较
- 可以't在JavaScript中比较两个字符串
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何在moment.js中只比较日期
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 用于比较值的开关大小写
- 强制区域设置比较区分大小写
- JavaScript:与区域性无关的不区分大小写的字符串比较
- 是否有一个简单的方法可以使js文件中的所有字符串比较不区分大小写
- javascript比较字符串区分大小写
- 将两个字符串变量与一个字符串变量作为其他忽略大小写的子字符串进行比较