[英]String Concatenation
正如我在上一個問題(鏈接)中有關連接可變長度的多部分字符串所問的那樣,我使用了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。我在while循環中使用了%025s
,因為我希望用戶名右對齊,而%-25s
則使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),因此至少需要最佳結果。
我認為是因為字體不同
它是。 通過插入空格來設置string.format
格式。 這僅適用於固定寬度的字體(即,所有字符都具有相同的寬度,包括空格)。
因為大多數客戶端都使用Windows 7默認字體(Tahoma / Verdana為11px)
在什么地方? 他們如何查看您的輸出? 您是否將其寫入文本文件,然后在自己選擇的編輯器(可能是記事本)中打開? 那么這種方法將根本行不通。
對輸出要求的了解不足,無法進一步指導您,但是值得注意的是,每個人都擁有瀏覽器,因此HTML輸出具有很高的可移植性。
string.format不會截斷-字段的寬度是最小的,不是最大的。 您必須使用DataArray.username:sub(0,25)
類的東西將字符串截斷為25個字符。
我將從string.format中刪除選項卡; 並僅使用%25s提供的理由。 不會很完美,但可能會更接近。
如果可以,請使用固定寬度的字體。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.