From 77acfb3338d8a6620c753f7cb6f9153e1c72f15f Mon Sep 17 00:00:00 2001 From: vugi99 Date: Sun, 24 May 2026 12:07:07 +0200 Subject: [PATCH] string.Split and string.SafePattern --- string.lua | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/string.lua b/string.lua index 7ba6a0c..45c74f7 100644 --- a/string.lua +++ b/string.lua @@ -33,3 +33,43 @@ function string.ToTable(str) return tbl end + +local escaped_pattern_characters = { + ["("] = "%(", + [")"] = "%)", + ["["] = "%[", + ["]"] = "%]", + ["."] = "%.", + ["%"] = "%%", + ["+"] = "%+", + ["-"] = "%-", + ["*"] = "%*", + ["?"] = "%?", + ["^"] = "%^", + ["$"] = "%$", + ["\0"] = "%z" +} + +function string.SafePattern(str) + return string.gsub(str, ".", escaped_pattern_characters) +end + +function string.Split(str, delimiter, is_pattern) + if (not delimiter) or delimiter == "" then + return string.ToTable(str) + end + + local cur_i = 1 + + local tbl = {} + for _=1, string.len(str) do + local start_i, end_i = string.find(str, delimiter, cur_i, not is_pattern) + if not start_i then break end + tbl[#tbl+1] = string.sub(str, cur_i, start_i-1) + cur_i = end_i+1 + end + + tbl[#tbl+1] = string.sub(str, cur_i) + + return tbl +end \ No newline at end of file