限制字符输入为特定字符。

我正在制作一个完全可用的加减程序作为一个简单的小项目。我想知道是否有一种方法可以限制输入特定的字符(例如二进制输入的1和0,以及加减输入的A和B)。我可以用空字符串替换所有不是这些字符的字符来摆脱它们,但这样做相当繁琐。

点赞
用户3934293
用户3934293

以下是一些简单的代码,用于过滤用户输入中的指定字符:

local filter = "10abAB"
local input = io.read()
input = input:gsub("[^" .. filter .. "]", "")

filter 变量只需设为您希望在用户输入中允许的字符即可。例如,如果您希望允许 c,则添加 c: local filter = "10abcABC"

虽然我假设您从 io.read() 中获取输入,但也有可能您从其他地方获取该输入,因此您只需在此处替换 io.read() 即可。

我的示例代码的第三行实际上是过滤文本的代码。它使用 string:gsub 来执行此操作,这意味着它也可以编写成这样:

input = string.gsub(input, "[^" .. filter .. "]", "").

这样编写的好处在于,它清楚地表明输入应该是一个字符串。

gsub 模式是 [^10abAB],这意味着任何不属于该模式的字符都将被过滤掉,因为它们前面有 ^,并且替换模式是方法调用中的最后一个参数,即空字符串。

额外的超短一行代码,您可能不应该使用:

local input = io.read():gsub("[^10abAB]", "")
2016-01-05 16:35:48