53 lines
1.3 KiB
Lua
53 lines
1.3 KiB
Lua
-- Copyright (C) 2025 ASTRONAND
|
|
function string.hasSuffix(str, suffix)
|
|
return string.sub(str, #suffix+1) == suffix
|
|
end
|
|
|
|
function string.hasPrefix(str, prefix)
|
|
return string.sub(str, 1, #prefix) == prefix
|
|
end
|
|
|
|
function string.getSuffix(str, prefix)
|
|
return string.sub(str, #prefix+1)
|
|
end
|
|
|
|
function string.getPrefix(str, suffix)
|
|
return string.sub(str, 1, #suffix)
|
|
end
|
|
|
|
function string.join(delim, ...)
|
|
return table.concat(table.pack(...), delim)
|
|
end
|
|
|
|
function string.split(str, delim, maxResultCountOrNil)
|
|
assert(#delim == 1, "only delim len 1 supported for now")
|
|
maxResultCountOrNil = (maxResultCountOrNil or 0)-1
|
|
local rv = {}
|
|
local buf = ""
|
|
for i = 1, #str do
|
|
local c = string.sub(str,i,i)
|
|
if #rv ~= maxResultCountOrNil and c == delim then
|
|
table.insert(rv, buf)
|
|
buf = ""
|
|
else
|
|
buf = buf..c
|
|
end
|
|
end
|
|
table.insert(rv, buf)
|
|
return rv
|
|
end
|
|
|
|
function string.replace(str, search, replacement)
|
|
local rv = ""
|
|
local consumedLen = 1
|
|
local i = 1
|
|
while i<#str do
|
|
if string.sub(str, i, i+#search-1) == search then
|
|
rv = rv .. string.sub(str, consumedLen, i-1) .. replacement
|
|
i=i+#search
|
|
consumedLen = i
|
|
end
|
|
i=i+1
|
|
end
|
|
return rv .. string.sub(str, consumedLen)
|
|
end |