如何在 Lua 中乘以字符串?

Rhy*_*567 0 lua

我想将一个字符串相乘并将它们存储到一个变量中,这是我想做的一个例子,但在 Python 中:

a = "A" * 200
Run Code Online (Sandbox Code Playgroud)

Pig*_*let 9

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

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

返回一个字符串,该字符串是由字符串 sep 分隔的字符串 s 的 n 个副本的串联。sep 的默认值是空字符串(即没有分隔符)。如果 n 不为正则返回空字符串。

(请注意,单次调用此函数很容易耗尽机器的内存。)

如果你想使用乘法语法,你可以__mult在字符串元表中实现元方法

getmetatable("a").__mult = string.rep
Run Code Online (Sandbox Code Playgroud)

但这会改变 Lua 的行为。Lua 会隐式转换"1" * "4"为1 * 4解析为4. 我们更改后会导致"1111"

这可能会在以后引起问题。此外,这还会影响所有字符串,因此您可能会更改其他人的代码,而这些人并不打算在您的公共代码库中这样做。

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


小智 7

您可以使用标准功能:

a = string.rep("A", 200)
Run Code Online (Sandbox Code Playgroud)