Javascript 排序字符串时应é;走在e前面
如果我把cafeé和cafe这两个字母分为两类,那么对于哪个字母排在第一位,有没有一个最佳实践可以遵循?我用javascript测试了localeCompare,café排在café之前,但我不明白为什么。最好的做法是先排序,不带发音符号,即café排在café之前Javascript 排序字符串时应é;走在e前面,javascript,string,sorting,Javascript,String,Sorting,如果我把cafeé和cafe这两个字母分为两类,那么对于哪个字母排在第一位,有没有一个最佳实践可以遵循?我用javascript测试了localeCompare,café排在café之前,但我不明白为什么。最好的做法是先排序,不带发音符号,即café排在café之前 localeCompare通过去除发音符号来工作,因此排序顺序不能反映真实的单词,因为café变成了cafeé 您可以在此处阅读有关localeCompare的更多信息: 文本的排序方式取决于其排序方式 一个传统是字符的“US-A
localeCompare
通过去除发音符号来工作,因此排序顺序不能反映真实的单词,因为café变成了cafeé
您可以在此处阅读有关localeCompare的更多信息:
文本的排序方式取决于其排序方式
一个传统是字符的“US-ASCII”表示,特别是在C编程语言中。当文本根据ASCII排序时,顺序仅取决于ASCII规范中每个字符的数值。有时这被称为“C”语言环境
现代软件通常应该使用合适的语言环境,以便按照人们期望的方式进行排序,而不考虑计算机使用的字符的数字表示
另请参见这可能与此相关:对我来说似乎是另一种情况->我不明白你在说什么。令人困惑的是,排序顺序并不能反映真实的单词。
localeCompare
去掉了发音符号,也就是说,它把café变成了cafe——因此,当你使用它进行排序时,它是将cafe与cafeI进行排序。这两种不同的方法进行了测试。第一个测试是[“café”,“cafe”],第二个测试是[“cafe”,“café]。输入顺序并不重要,两次咖啡馆都是先出来的。如果去掉了发音符号,是否应该保留顺序?localeCompare的问题是,它完全依赖于实现,并且您无法保证两个浏览器使用此方法的行为相同(尽管大多数情况下是这样的)。我不知道你在什么浏览器中进行测试,但是在最新的chrome“cafe.localeCompare('caf')!='café'.localeCompare('cafe')
,因此应该保留订单。