nuberelo
nuberelo

Reputation: 47

How to split string by string length and a separator?

I'm trying to split a string into 2 strings when main string is over 30 chars and separator I wanted to use is a simple space between chars(the last space between words in main string) so it won't cut words. I'm asking you guys for help because I'm not very good with patterns in Lua.

Upvotes: 0

Views: 1451

Answers (2)

lhf
lhf

Reputation: 72312

If you just want to split the string at the last space between words, try this

s="How to split string by string length and a separator"
a,b=s:match("(.+) (.+)")
print(s)
print(a)
print(b)

Upvotes: 0

Egor Skriptunoff
Egor Skriptunoff

Reputation: 23737

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 string'
for _, line in ipairs(split(main_string, 20)) do
   print(line)
end


-- Output
This is very very
very very very very
long string

Upvotes: 5

Related Questions