将一个单词数组/表按照单词长度从短到长排序。

Corona/Lua如何对字符串表格按照长度从短到长排序

问题描述

在Corona/Lua中,如何对一个包含多个字符串的表格按照字符串长度从短到长排序?

解决方案

可以使用table.sort()函数结合自定义比较函数来实现。

-- 比较函数
local function compare(a, b)
    return #a < #b
end

-- 待排序的字符串表格
local myTable = {"banana", "apple", "orange"}

-- 排序
table.sort(myTable, compare)

-- 输出排序后的表格
for i, v in ipairs(myTable) do
    print(i, v)
end

运行结果如下:

1       apple
2       orange
3       banana

分析

table.sort()函数可以对一个表格进行排序。它支持一个可选参数comp,用于指定比较函数,用于根据元素之间的关系进行排序。比较函数应该接受两个参数,表示待比较的元素,如果第一个参数小于第二个参数,则返回true,否则返回false。

在本例中,自定义的比较函数compare()比较的是待排序字符串的长度,如果第一个字符串的长度小于第二个字符串,则返回true。table.sort()函数根据这个比较函数对字符串表格进行排序。

总结

使用table.sort()函数结合自定义比较函数,可以在Corona/Lua中对字符串表格按照长度从短到长排序。

点赞
用户438753
用户438753

假设您的表是一个索引表而不是一个键表,请尝试以下操作:

test = {'123','1234','1245','1','12'}
table.sort(test, function(a,b) return #a<#b end)
for i,v in ipairs(test) do
    print (i,v)
end

这里重要的一行是

table.sort(test, function(a,b) return #a<#b end)

单词将仅按长度排序,匹配长度内的顺序将是任意的。如果您想按其他标准排序,请扩展排序函数 例如 function(a,b) return #a<#b end

2012-12-19 11:58:19