String 将可变长度字符串连接为表
我从SQL中提取一个数据数组,然后将它们作为字符串连接起来以显示。函数如下所示:String 将可变长度字符串连接为表,string,lua,concatenation,ptokax,String,Lua,Concatenation,Ptokax,我从SQL中提取一个数据数组,然后将它们作为字符串连接起来以显示。函数如下所示: function FetchTopStats( Conn, iLimit ) local sToReturn = "\tS.No. \t UserName \t Score\n\t" SQLQuery = assert( Conn:execute( string.format( [[SELECT username, totalcount FROM chatstat ORDER BY totalcount D
function FetchTopStats( Conn, iLimit )
local sToReturn = "\tS.No. \t UserName \t Score\n\t"
SQLQuery = assert( Conn:execute( string.format( [[SELECT username, totalcount FROM chatstat ORDER BY totalcount DESC LIMIT %d]], iLimit ) ) )
DataArray = SQLQuery:fetch ({}, "a")
i = 1
while DataArray do
sToReturn = sToReturn..tostring( i ).."\t"..DataArray.username.." \t "..DataArray.totalcount.."\n\t"
DataArray = SQLQuery:fetch ({}, "a")
i = i + 1
end
return sToReturn
end
这给了我一个如下输出:
S.No. UserName Score
1 aim 6641
2 time 5021
3 Shepard 4977
等等。我正在考虑使用string.format
函数来显示如下内容:
S.No. UserName Score
1 aim 6641
2 time 5021
3 Shepard 4977
但是,我完全不知道该怎么做。我想到的唯一选择是检查用户名的字符串长度,然后相应地应用
\t
。我想在最后使用它。好吧,您需要找出用户名的最大长度,从而使算法2-pass,或者将其限制为任意(但合理)大小,并无条件地切掉过长字符串的尾部。获得列宽后,可以使用左对齐或右对齐格式字符串:
> print(string.format("|%-10d|%-20s|%10d|", 1, "Shepard", 9000))
|1 |Shepard | 9000|
此外,对于大型表,考虑使用<代码>表.CONTAG/CODE >建立最终输出:它比重复添加字符串要快得多(参见for for解释)。
< P>,您需要找出用户名的最大长度,从而使算法2-PASS,或将其限制为任意(但合理)。大小和无条件地切掉过长弦的尾部。获得列宽后,可以使用左对齐或右对齐格式字符串:> print(string.format("|%-10d|%-20s|%10d|", 1, "Shepard", 9000))
|1 |Shepard | 9000|
此外,对于大型表,考虑使用<代码>表.CONTAUT/CODE >建立最终输出:它比重复添加字符串要快得多(参见for解释)。