Lua按编号拼接字符串

  本文接《C++按编号拼接字符串》,给出Lua版本,具体就不详述了。直接上代码。

1. 简单拼接

function sprintf_x(fmt, ...)
    -- local arg = {...} -- lua5.1以上的版本,后面的arg.n改成#arg
    local xfmt = string.gsub(fmt, "%%%s*(%d+)", function(n)
                                                    n = tonumber(n)
                                                    if n and n >= 1 and n <= arg.n then
                                                        return arg[n]
                                                    end
                                                    return ""
                                                end)
    return xfmt
end

  用“..”连接的,可以用sprintf_x来替代:

"学" .. "Lua" .. ",从" .. "入门" .. "到" .. "精通" .. ",只需" .. 210 .."天"
-- 可以替换为:
sprintf_x("学%1,从%2到%3,只需%4天", "Lua", "入门", "精通", 210)

2. 精细化拼接

function sprintf_y(fmt, ...)
    -- local arg = {...} -- lua5.1以上的版本,后面的arg.n改成#arg
    local xfmt = string.gsub(fmt, "%%%s*(%d+)", function(n)
                                                    n = tonumber(n)
                                                    if n and n >= 1 and n * 2 <= arg.n then
                                                        return string.format(arg[n * 2], arg[n * 2 - 1])
                                                    end
                                                    return ""
                                                end)
    return xfmt
end

  用string.format(fmt, …)格式化的,可以用sprintf_y来替代:

string.format("学%.3s,从%s到%s,只需%-4d天", "Lua", "入门", "精通", 210)
-- 可以替换为:
sprintf_y("学%1,从%2到%3,只需%4天", "Lua", "%.3s", "入门", "%s", "精通", "%s", 210, "%-4d")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值