Javascript - 对字母数字组合进行排序
我有字母和数字的组合。例如:2E12、1Z10、3D13、3D03、FB14、X002 等。
我尝试了一些方法来对这些字符串进行排序,但似乎没有任何效果。 parseInt 在块中工作,但整个数组从未排序(它是一个 json 数组),如果第二次运行排序,则会出现不同的结果。
我还尝试使用正则表达式将所有字母替换为数字,但这会产生逻辑错误。每次替换字符串中间的大字母时,数字都会增加 10 或 20 倍。例如,1Z10 将创建 12610,即使它以 1 开头并且应向顶部排序。
有谁知道如何对这些字符串进行排序?字母在前还是数字在前并不重要,只要我能摆脱随机的情况即可。
提前致谢!
I have a combination of letters and numbers. For example: 2E12, 1Z10, 3D13, 3D03, FB14, X002, etc.
I've tried a handful of methods to sort these strings, but nothing seems to work. parseInt works in clumps but the whole array is never sorted (it is a json array) and different results appear if the sort is run a second time.
I've also tried using regex to replace all of the letters with numbers, but this creates a logic error. Each time a large letter in the middle of the string is replaced it increases the number by a factor of 10 or 20. For example, 1Z10 would create 12610 even though it starts with a 1 and should sort towards the top.
Does anyone know of how to sort these strings? It doesn't matter if the letter is first or the number is first, as long as I can get away from the random smatterings.
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您希望数字序列像数字一样排序,则在字母和之前
这样 2 之后的 100 次排序,你需要所谓的自然排序 -
这是一个例子,谷歌会找到更多。
var s= '2E12, 1Z10, 1z2, 3D13, 3D03, FB14, X002'.split(', ');
s.sort(natSort)
if you want digit sequences to sort as if they were numbers, before alphas and
so that 100 sorts after 2, you need what is called a natural sort-
This is one example, Google will find more.
var s= '2E12, 1Z10, 1z2, 3D13, 3D03, FB14, X002'.split(', ');
s.sort(natSort)