hjp*_*r92 1 string lua concatenation string-formatting ptokax
正如我在上一个问题(链接)中提到的关于连接变量长度的多部分字符串的问题,我使用了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
Run Code Online (Sandbox Code Playgroud)
但是,即使是现在,价值score仍未按要求遵循订单.用户名的最大长度是25.我%025s在while循环中使用了因为我希望用户名是右对齐的,%-25s而是要使word 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
Run Code Online (Sandbox Code Playgroud)
我认为这是因为字体不同,但由于大多数客户端都有Windows 7默认字体(Tahoma/Verdana,11px),我至少需要最佳结果.
我认为这是因为字体不同
它是.string.format通过插入空格来格式化.这仅适用于固定宽度的字体(即所有字符具有相同的宽度,包括空格).
因为大多数客户端都有Windows 7默认字体(Tahoma/Verdana,11px)
在什么?他们如何查看您的输出?你把它写到文本文件,然后他们在他们选择的编辑器(可能是记事本)中打开?那么这种方法根本行不通.
不知道你的输出要求是否足以引导你,但值得注意的是每个人都有浏览器,所以HTML输出非常便携.