我的网站上有一个数据库,其中包含一长串#(产品编号),其中包含字母(Exp. TC-345、TC-234 或 HC-236W 123-234-PWD...)
我们可以按数字和字母顺序对网站上的 # 进行排序吗?
目前我们按字母顺序存储,所以顺序是 (10-PDW, 100-PDW, 110-PDW 2-PDW)
我们想把它改成 (2-PDW, 10-PDW, 100-PDW, 110-PDW)
我的开发人员说“配色编号永远不能按数字排序。我们需要为所有配色将另一个数字字段添加到数据库中,然后按数字对该字段进行排序。现在这些数字是按字母顺序排列的。”
你如何对带有字母的数字进行排序?我们希望避免添加数字字段 - 这只是额外的工作。有没有什么新技术可以做到这一点?
最佳答案
有可能的。一种方法是使用一个函数来加权字符串,它赋予数字比字母更大的权重。像这样的东西:
letbers = ["10-PDW", "100-PDW", "110-PDW", "2-PDW"]
def weight(letber):
if letber == "":
return 0
n = ord(letber[-1])
if letber[-1] in "0123456789":
n *= 256^6 # 6 because maximum key length is 6
return 256*n + weight(letber[:-1])
print sorted(letbers, key = weight)
关于sorting - 按数字和字母顺序用字母对数字进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17996193/