Lua 中如何对字符串进行乘法运算?

我想把一个字符串乘以一个数字并将结果存储到一个变量中,以下是我在 Python 中想要实现的效果:

a = "A" * 200
点赞
用户3342050
用户3342050

pete & repete 在一艘小船里... 注意这里 repeat 拼错了,因为在 Lua 中它是一个关键字。你可以使用 连接操作符,并使用一个容器。

#! /usr/bin/env lua
local pete, repete, boat  = 'a',  20,  ''

for a = 1, repete do boat = boat ..pete end
print( boat )

aaaaaaaaaaaaaaaaaaaa

2021-06-18 00:54:59
用户15592404
用户15592404

你可以使用标准函数:

a = string.rep("A", 200)
2021-06-18 04:29:53
用户2858170
用户2858170

如果只是需要重复一个字符串n次,应该使用string.rep

string.rep (s, n [, sep])

返回s字符串重复n次后用sep字符串作为分隔符连接的新字符串。如果sep为空字符串,则不使用分隔符。如果n不为正数,则返回空字符串。

(请注意,使用此函数一次很容易耗尽计算机的内存。)

如果想要使用乘法运算符重复字符串,可以在字符串元表中实现__mult元方法

getmetatable("a").__mult = string.rep

这将改变Lua的行为。Lua将隐式地将"1" * "4"转换为1 * 4,结果为4。在更改后,它将结果为"1111"

这可能会在以后造成问题。而且它会影响所有字符串,因此您可能会更改其他人在公共代码库中不打算这样做的代码。

因此,我个人建议在需要重复字符串时坚持使用string.rep

2021-06-18 06:48:17