lua字符串打印

ano*_*non 1 lua format-string

在C中,我有格式字符串,如:

char *msg = "wlll you marry me"
fprintf(stderr, "%s, %s?", name, msg);
Run Code Online (Sandbox Code Playgroud)

现在,我可以使用格式字符串在lua中执行类似的操作吗?即我想要功能相当的东西:

name .. ", " .. msg .. "?"
Run Code Online (Sandbox Code Playgroud)

在卢阿,但不是那么难看.

好的,所以我可以做string.format("%s,%s?",name,msg),但是我可以更进一步,比如perl风格,我可以去哪里:

"%name, %msg?"
Run Code Online (Sandbox Code Playgroud)

谢谢!

Mar*_*off 6

根据Lua Users Wiki关于String Interpolation的文章,Lua没有提供内置的本机方式来做到这一点; 但是,该页面上发布了几种解决方法.

这是一个简单的实现( - RiciLake):

function interp(s, tab)
  return (s:gsub('($%b{})', function(w) return tab[w:sub(3, -2)] or w end))
end
print( interp("${name} is ${value}", {name = "foo", value = "bar"}) )

getmetatable("").__mod = interp
print( "${name} is ${value}" % {name = "foo", value = "bar"} )
-- Outputs "foo is bar"
Run Code Online (Sandbox Code Playgroud)