字符串连接

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),我至少需要最佳结果.

Mud*_*Mud 5

我认为这是因为字体不同

它是.string.format通过插入空格来格式化.这适用于固定宽度的字体(即所有字符具有相同的宽度,包括空格).

因为大多数客户端都有Windows 7默认字体(Tahoma/Verdana,11px)

在什么?他们如何查看您的输出?你把它写到文本文件,然后他们在他们选择的编辑器(可能是记事本)中打开?那么这种方法根本行不通.

不知道你的输出要求是否足以引导你,但值得注意的是每个人都有浏览器,所以HTML输出非常便携.