Lua:对大小写不同的字符串数组进行排序
Lua: Sort String array with varying casing
我在使用 table.sort 函数时遇到 Lua 问题。如果你想说服自己,我写了一个小片段供你测试。
test = {"apple", "Bee", "clown" }
table.sort( test )
for k, v in pairs( test ) do
print( k, v )
end
结果是
1 Bee
2 apple
3 clown
尽管我想要的结果看起来像这样
1 apple
2 Bee
3 clown
我已经设法弄清楚这是因为 table.sort 函数使用默认的“<”运算符,而 "B" 有一个 ASCII-值为66,明显低于"a"或"c"的ASCII值,分别为97和99。我知道我可以在调用 table.sort 时应用自定义函数,但我不知道该函数的外观。
此外,不能将所有字母设为小写或大写,除非您以后能够恢复它们。
非常感谢任何帮助。
函数 table.sort
接受一个函数作为第二个参数来测试您的值。
例子
table.sort(tTable, function(a, b) return a:upper() < b:upper() end)
我在使用 table.sort 函数时遇到 Lua 问题。如果你想说服自己,我写了一个小片段供你测试。
test = {"apple", "Bee", "clown" }
table.sort( test )
for k, v in pairs( test ) do
print( k, v )
end
结果是
1 Bee
2 apple
3 clown
尽管我想要的结果看起来像这样
1 apple
2 Bee
3 clown
我已经设法弄清楚这是因为 table.sort 函数使用默认的“<”运算符,而 "B" 有一个 ASCII-值为66,明显低于"a"或"c"的ASCII值,分别为97和99。我知道我可以在调用 table.sort 时应用自定义函数,但我不知道该函数的外观。
此外,不能将所有字母设为小写或大写,除非您以后能够恢复它们。
非常感谢任何帮助。
函数 table.sort
接受一个函数作为第二个参数来测试您的值。
例子
table.sort(tTable, function(a, b) return a:upper() < b:upper() end)