2012-06-26 00:13:30 +02:00
|
|
|
-- @docclass string
|
|
|
|
|
|
|
|
function string:split(delim)
|
|
|
|
local start = 1
|
|
|
|
local results = {}
|
|
|
|
while true do
|
|
|
|
local pos = string.find(self, delim, start, true)
|
|
|
|
if not pos then
|
|
|
|
break
|
|
|
|
end
|
|
|
|
table.insert(results, string.sub(self, start, pos-1))
|
|
|
|
start = pos + string.len(delim)
|
|
|
|
end
|
|
|
|
table.insert(results, string.sub(self, start))
|
|
|
|
table.removevalue(results, '')
|
|
|
|
return results
|
|
|
|
end
|
|
|
|
|
|
|
|
function string:starts(start)
|
|
|
|
return string.sub(self, 1, #start) == start
|
|
|
|
end
|
|
|
|
|
2012-10-05 00:35:02 +02:00
|
|
|
function string.ends(s, test)
|
|
|
|
return test =='' or string.sub(s,-string.len(test)) == test
|
|
|
|
end
|
|
|
|
|
2012-06-26 00:13:30 +02:00
|
|
|
function string:trim()
|
|
|
|
return string.match(self, '^%s*(.*%S)') or ''
|
|
|
|
end
|
|
|
|
|
|
|
|
function string:explode(sep, limit)
|
2012-12-28 12:05:45 +01:00
|
|
|
if type(sep) ~= 'string' or tostring(self):len() == 0 or sep:len() == 0 then
|
2012-06-26 00:13:30 +02:00
|
|
|
return {}
|
|
|
|
end
|
|
|
|
|
|
|
|
local i, pos, tmp, t = 0, 1, "", {}
|
|
|
|
for s, e in function() return string.find(self, sep, pos) end do
|
|
|
|
tmp = self:sub(pos, s - 1):trim()
|
|
|
|
table.insert(t, tmp)
|
|
|
|
pos = e + 1
|
|
|
|
|
|
|
|
i = i + 1
|
2012-12-28 12:05:45 +01:00
|
|
|
if limit ~= nil and i == limit then
|
2012-06-26 00:13:30 +02:00
|
|
|
break
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
tmp = self:sub(pos):trim()
|
|
|
|
table.insert(t, tmp)
|
|
|
|
return t
|
|
|
|
end
|
2012-12-28 12:05:45 +01:00
|
|
|
|
2013-01-24 23:57:51 +01:00
|
|
|
function string:operatorLess(other)
|
|
|
|
local selfLower = self:lower()
|
|
|
|
local otherLower = other:lower()
|
|
|
|
local selfLen = self:len()
|
|
|
|
local otherLen = other:len()
|
|
|
|
local minLen = math.min(selfLen, otherLen)
|
|
|
|
for i=1,minLen do
|
|
|
|
local selfByteI = string.byte(selfLower, i)
|
|
|
|
local otherByteI = string.byte(otherLower, i)
|
|
|
|
if selfByteI < otherByteI then
|
|
|
|
return true
|
|
|
|
elseif selfByteI > otherByteI then
|
|
|
|
return false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return selfLen < otherLen
|
|
|
|
end
|