正如我在上一个问题(链接)中询问的关于连接可变长度的多部分字符串,我使用了rkhayrov在那里回答的方法,现在,我的函数如下所示:
local sToReturn = string.format( "\t%03s\t%-25s\t%-7s\n\t", "S. No.", "UserName", "Score" )
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
sTemp = string.format( "%03s\t%025s\t%-7d", tostring(i), DataArray.username, DataArray.totalcount )
sToReturn = sToReturn..sTemp.."\n\t"
DataArray = SQLQuery:fetch ({}, "a")
i = i + 1
end
但是,即使是现在, 的值score
仍然没有按照要求的顺序排列。用户名的最大长度是 25。我%025s
在 while 循环中使用过,因为我希望用户名右对齐,而%-25s
is 是为了使单词UserName
中心对齐。
编辑
电流输出:
所需输出:
Displaying the list of top 5 chit-chatters.
S. No. UserName Score
1 Keeda 9440
2 _2.2_™ 7675
3 aim 7057
4 KGBRULES 6770
5 Guddu 6322
我认为这是因为字体不同,但由于大多数客户端都有 Windows 7 默认字体(Tahoma/Verdana 为 11px),我至少需要最佳结果。