Lua字符串操作

这是我的代码

local function char(...) return string.char(...) end

local function addtok(text,token,C)
   text = text or ""
   local string = ""
   local count = 0
   for word in text:gmatch(("[^%s]+"):format(char(C))) do
      string = string..char(C)..word
   end
   string = string..char(C)..token
   print(string)
end

该函数

addtok("封印光环;充能器;正义之怒","智慧圣印",59)

返回

";封印光环;充能器;正义之怒;智慧圣印"

但我想要的是

"封印光环;充能器;正义之怒;智慧圣印"

可能的解决方案:print(string.sub(string,2))

有更好的解决方案吗?

原文链接 https://stackoverflow.com/questions/71299112

点赞
stackoverflow用户7185318
stackoverflow用户7185318

该代码行 string = string..char(C)..word 会在第一个分号前加上一个字符。这是在循环中附加的问题 - 如果不想要尾随或前导分隔符,必须针对最后一个或第一个元素进行特殊处理。但是,在这种情况下,您应该使用table.concat,既可以提高性能(避免不必要的字符串复制),又可以方便地按分隔符连接:

local function char(...) return string.char(...) end

local function addtok(text,token,C)
   text = text or ""
   local words = {}
   local count = 0
   for word in text:gmatch(("[^%s]+"):format(char(C))) do
      table.insert(words, word)
   end
   local string = table.concat(words, char(C))..char(C)..token
   print(string)
end
2022-02-28 18:22:11
stackoverflow用户2858170
stackoverflow用户2858170
本地函数:addtok(text,token,C)
   本地字符串=(text或"")..string.char(C)..token
   打印(字符串)
结束

addtok(“虔诚光环; 充能器; 正义之怒”,“智慧印记”,59
2022-02-28 18:53:46