我正在尝试按字母顺序比较两个字符串,以便进行排序。例如,我希望有一个像if('aaaa' < 'ab')
这样的布尔检查。我试过了,但它没有给我正确的结果,所以我猜这不是正确的语法。我如何在jquery或Javascript中做到这一点?
发布于 2016-01-14 07:38:52
您确实说过比较是为了排序的目的。那么我建议使用localeCompare:
"a".localeCompare("b");
如果返回"a" < "b"
、1
或0
,则返回-1
,否则返回Array.prototype.sort()
请记住,排序依赖于区域设置。例如,在德语中,ä
是a
的变体,因此"ä".localeCompare("b", "de-DE")
返回-1
。在瑞典语中,ä
是字母表中的最后一个字母,因此"ä".localeCompare("b", "se-SE")
返回1
。
如果没有为localeCompare
设置第二个参数,则使用浏览器的区域设置。在我的经验中,这从来不是我想要的,因为它将与服务器不同地排序,服务器为所有用户提供固定的区域设置。
此外,如果要排序的内容包含数字,则可能需要:
"a5b".localeCompare("a21b", undefined, { numeric: true })
这将返回-1,识别出5作为一个数字小于21。如果没有{ numeric: true }
,它将返回1,因为"2“在"5”之前排序。在许多实际应用程序中,用户期望"a5b“出现在"a21b”之前。
发布于 2013-07-28 15:29:42
请记住,像"x“> "X”这样的字符串比较是区分大小写的
"aa" < "ab" //true
"aa" < "Ab" //false
可以使用.toLowerCase()
进行比较,而不区分大小写。
发布于 2016-09-13 04:13:23
"a".localeCompare("b")
实际上应该返回-1
,因为a
在b
之前排序
https://stackoverflow.com/questions/10198257
复制相似问题