Каковы некоторые выражения для создания автоматических c запятых для больших чисел? - PullRequest
0 голосов
/ 05 февраля 2020

Примером может быть: от 1000000 до 1000000.

Если бы вы могли сделать это в Lua, то было бы предпочтительнее

Ответы [ 2 ]

2 голосов
/ 05 февраля 2020

Lua -users-wiki имеет пример реализации для вашей проблемы.

function comma_value(amount)
  local formatted = amount
  while true do
    formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
    if (k==0) then
      break
    end
  end
  return formatted
end

print(comma_value(1000000))
print(comma_value(111))
print(comma_value(3.141592))

Вывод:

1,000,000
111
3.141592

Альтернативная версия

function comma_value(n) -- credit http://richard.warburton.it
    local left,num,right = string.match(n,'^([^%d]*%d)(%d*)(.-)$')
    return left..(num:reverse():gsub('(%d%d%d)','%1,'):reverse())..right
end
1 голос
/ 05 февраля 2020
local function commas(number)
   return tostring(number) -- Make sure the "number" is a string
      :reverse() -- Reverse the string
      :gsub('%d%d%d', '%0,') -- insert one comma after every 3 numbers
      :gsub(',$', '') -- Remove a trailing comma if present
      :reverse() -- Reverse the string again
      :sub(1) -- a little hack to get rid of the second return value ?
end

print(commas(1000000))  -- Pass
print(commas(111))      -- Pass
print(commas(3.141592)) -- Fail
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...