Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

String pattern help?

Just wondering, how could i conduct a string pattern that captures every 5 characters in a string (no matter that they are)? I know getting every character in a string is done like this:

for c in string.gmatch("hello*world*", ".") do
	print(c)
end

-- h
-- e
-- l
-- l
-- o
-- *
-- w
-- ...

But how would i make it so it would split the string every 5 characters? Including all kinds, like spaces, symbols, ect. So the output from above would instead look something like this:

-- hello      -- (cut at 5)
-- *worl     -- (cut at next 5)
-- d*            -- (cut from last 5, to end)

If someone knows how this could work, and is willing to share, I'd appreciate it very much. Thanks.

1 answer

✓ Accepted answer

Use the . character. This character in a string pattern represents any character.

Your pattern would therefore be ..... (five . characters).

local phrase = "hello*world*"
for match in phrase:gmatch(".....") do
	print(match)
end

However, this does not get the last portion. You will have to retrieve that with the sub method. A simple formula is to subtract the remainder of the phrase, add one, and start the substring from there. You can do this with the modulus operator %.

print(phrase:sub(#phrase - #phrase%5 + 1))

1 comment

0

Thank you very much.

This discussion is preserved as it was. New answers, comments, and votes are closed.