如何根据字符串长度和分隔符拆分字符串?

我正在尝试在主字符串超过30个字符且我想使用的分隔符是字符之间的简单空格(主字符串中单词之间的最后一个空格),这样就不会截断单词时将字符串分成2个字符串。我向你们寻求帮助,因为我在 Lua 中不是很擅长模式。

点赞
用户1847592
用户1847592
local function split(str, max_line_length)
   local lines = {}
   local line
   str:gsub('(%s*)(%S+)', -- 匹配空格和非空字符
      function(spc, word)
         if not line or #line + #spc + #word > max_line_length then
            table.insert(lines, line)
            line = word
         else
            line = line..spc..word
         end
      end
   )
   table.insert(lines, line)
   return lines
end

local main_string = 'This is very very very very very very long st' -- 长度为42
for _, line in ipairs(split(main_string, 20)) do -- 将main_string分为长度为20的行
   print(line)
end

-- 输出
This is very very
very very very very
long st
2013-04-04 11:00:01
用户107090
用户107090

如果您只想在单词之间的最后一个空格处分隔字符串,请尝试以下操作:

s="怎样通过字符串长度和分隔符分割字符串"
a,b=s:match("(.+) (.+)")
print(s)
print(a)
print(b)
2013-04-04 11:51:10