7

我有一个字符串,我需要添加一个变量,所以我使用该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 个变量。

4

4 回答 4

6

%你可以用另一个逃避a %,例如string.format("%%20")会给%20

于 2013-08-08T13:38:58.250 回答
3

与许多其他语言不同,Lua 使用%以下魔法字符来转义:

( ) . % + - * ? [ ] ^ $
于 2013-08-08T14:04:57.013 回答
1

下面的代码转义所有 URL 转义(即 % 后跟一个数字):

ID=12345
f="id=%s&x=foo=&bar=asd%20yolo%20123-1512"
f=f:gsub("%%%d","%%%1")
print(string.format(f,ID))
于 2013-08-08T13:41:06.540 回答
1

我看到您已经接受了答案,但实际上,这种情况在实际应用程序中几乎永远不会发生。您应该尽量避免将模式与其他数据混合。

如果你有一个像这样的字符串:x=foo=&bar=asd%20yolo%20123-1512并且你想在它前面加上 ID 部分string.format,你应该使用这样的东西:

s = "x=foo=&bar=asd%20yolo%20123-1512"
ID = 12345
string.format("id=%d&%s", ID, s)

(注:我用过%d是因为你的ID是数字,所以%s在这种情况下首选。)

于 2013-08-08T14:51:09.077 回答