Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 按点lua拆分字符串_Design Patterns_Lua - Fatal编程技术网

Design patterns 按点lua拆分字符串

Design patterns 按点lua拆分字符串,design-patterns,lua,Design Patterns,Lua,我试图用一个点分割一个字符串,但保留两个(或更多)点 我的方法是这样的,只适用于双点: local s=“一些字符串..添加了几个点…更多点。插入了另一行。”; 对于s:gsub('%.%.','#&')中的行:gmatch('[^%.]+')do 打印(行:gsub(“#&”、“…”); 结束 另一种方法是这样的 print(s:match('([^%.]+[%.]*[^%.]+')) 它在下一个点序列后停止,因此不适合 如何在模式匹配中实现这一点?另一种方法: local s = 'some

我试图用一个点分割一个字符串,但保留两个(或更多)点

我的方法是这样的,只适用于双点:

local s=“一些字符串..添加了几个点…更多点。插入了另一行。”;
对于s:gsub('%.%.','#&')中的行:gmatch('[^%.]+')do
打印(行:gsub(“#&”、“…”);
结束

另一种方法是这样的

print(s:match('([^%.]+[%.]*[^%.]+'))

它在下一个点序列后停止,因此不适合


如何在模式匹配中实现这一点?

另一种方法:

local s = 'some string.. with several dots, added....more dots.another line inserted.'

function split_on_single_dot(s)
  local ans, old_pos = {}, 1
  for pos,dots in (s..(s:sub(-1) == '.' and '' or '.')):gmatch '()(%.+)' do
    if #dots == 1 then
      ans[#ans+1] = s:sub(old_pos,pos-1)
      old_pos = pos+1
    end
  end
  return ipairs(ans)
end

-- test
for i,v in split_on_single_dot(s) do print(i,v) end

对于s:gsub(“%.%.+”)中的行,函数(d)返回(“\0”):rep(#d)end):gmatch“[^.]+”执行打印(行:gsub(“%z”,”))end
@EgorSkriptunoff,确保它不是regex,但完成了任务,谢谢!5分钟,但记得选择这个作为答案,再次谢谢你,伙计。
local s = 'some string.. with several dots, added....more dots.another line inserted.'
for line in s:gsub("%f[.]%.%f[^.]", "\0"):gmatch"%Z+" do 
   print(line) 
end