Lua: строка определенной длины - PullRequest
0 голосов
/ 23 октября 2018
local data = "here is a string"
local no = 12
foo = string.format("%50s %05d",data,no)
print(foo:len(),string.format("%q",foo))

определяет foo как строку определенной длины

"                                  here is a string 00012"

Однако есть ли простой способ получить

"here is a string                                   00012"

Iзнаю, что я могу заполнить строку data пробелами

while data:len() < 50 do data = data.." " end

1 Ответ

0 голосов
/ 23 октября 2018

Добавить минус для форматирования строки %-50s для выравнивания текста по левому краю:

foo = string.format("%-50s %05d","here is a string", 12)
print(foo:len(), foo)

Вывод:

56  here is a string                                   00012

Допустимые флаги:

- : left align result inside field
+ : always prefix with a sign, using + if field positive
0 : left-fill with zeroes rather than spaces
(space) : If positive, put a space where the + would have been
# : Changes the behaviour of various formats, as follows:
  For octal conversion (o), prefixes the number with 0 - if necessary.
  For hex conversion (x), prefixes the number with 0x
  For hex conversion (X), prefixes the number with 0X
  For e, E and f formats, always show the decimal point.
  For g and G format, always show the decimal point, and do not truncate trailing zeroes.
  The option to 'always show the decimal point' would only apply if you had the precision set to 0.
...