我有一个字符串,我需要添加一个变量,所以我使用string.format
方法,但字符串也包含符号"%20"
(不确定它代表什么,可能是一个空格或其他东西)。无论如何,因为字符串包含多个"%"
,我只想将变量添加到第一个来设置id,有没有办法在点或其他东西处转义字符串?
现在:
ID = 12345
string.format("id=%s&x=foo=&bar=asd%20yolo%20123-1512", ID)
我得到bad argument #3 to 'format' (no value).
错误 - 因为它预计会传递3个变量。
答案 0 :(得分:5)
您可以使用其他%
转义%
,例如string.format("%%20")
将%20
答案 1 :(得分:3)
与许多其他语言不同,Lua使用%
来逃避以下魔术角色:
( ) . % + - * ? [ ] ^ $
答案 2 :(得分:1)
以下代码会转义所有网址转义(即%后跟数字):
ID=12345
f="id=%s&x=foo=&bar=asd%20yolo%20123-1512"
f=f:gsub("%%%d","%%%1")
print(string.format(f,ID))
答案 3 :(得分:1)
我看到你已经接受了答案,但实际上,这种情况几乎不会发生在真实的应用程序中。您应该尽量避免将模式与其他数据混合。
如果您有这样的字符串:x=foo=&bar=asd%20yolo%20123-1512
并且您希望使用string.format
将ID部分添加到其中,则应使用以下内容:
s = "x=foo=&bar=asd%20yolo%20123-1512"
ID = 12345
string.format("id=%d&%s", ID, s)
(注意:我使用了%d
,因为您的ID是一个数字,所以在这种情况下它更适合%s
。)