Lua字符串操作

一个字符串 '321@322@323@324@325'. 在这里,每个数字的位数为3,但不限于3,可以是任何数字。 这里有5个数字,但这个数字可以是任何东西。 任务是获取321、322、323、324、325并将其存储在表中,以便可以在它们上执行任何操作。

我已经尝试了几个字符串函数,比如 c = c:gsub('%W','') 来消除那些非字母数字字符,但什么也没帮助。

function encrypter()--FUNCTION 14
    c=' '
    print('请输入您的消息!')
    local message=io.read()
    lengthOfString=string.len(message)--内置函数用于获取字符串的长度。
    newLine()
    print('请输入您的密钥。请记住这个密钥,否则您的消息将无法解密。')
    newLine()
    key=io.read()
    key=tonumber(key)
    largeSpace()
    print("加密后的消息是")
    for s=1,lengthOfString do
        --print(encryptionFormula(string.byte(message,s),key))
        --内置函数用于将字符串的字符转换为其相应的ASCII值。第一个位置得到字符串或变量,第二个位置得到该字符在给定字符串中的位置。
        b=encryptionFormula(string.byte(message,s),key)
        c=c..tostring(b)..'@'
        --print(c)
        b=0
    end
    print(c)
    largeSpace()
    print("现在将此消息与密钥一起与接收方共享。如果您不希望您的消息被读取,请不要与任何人共享您的密钥。")
end
点赞
用户4984564
用户4984564

你要找的是 string.gmatch()

local input = "123@546514@13@548@2315"

local numbers = {}
for number in string.gmatch(input, '%d+') do
   table.insert(numbers, number)
end

-- 输出数字

for index, number in ipairs(numbers) do
   print(index, number)
   -- 这将输出:
   -- 1 123
   -- 2 546514
   -- 3 13
   -- 4 548
   -- 5 2315
end

如果你不知道 Lua 模式如何工作,可以在 参考手册 中了解或者查看 Programming in Lua(第一版可以在 官方网站 上免费获取)。

2019-09-30 13:59:04