Задача 1: удалить у строки первые 3 символа
str = "12345678901234567890"
out = ""
for i = 3 + 1 , #str do
local tmp = str:sub(i, i)
out = out .. tmp
end
print(out) -- 45678901234567890
или
str = "12345678901234567890"
out = ""
for i = 3 + 1, string.len(str) do
local tmp = string.sub(str, i, i)
out = out .. tmp
end
print(out) -- 45678901234567890
Задача 2: удалить у строки последние 3 символа
str = "12345678901234567890"
out = ""
for i = 3 + 1 , #str[10] do
local st = string.reverse(str[10]):sub(i, i)
out = out .. st
print(st)
end
print(out:reverse()) -- 12345678901234567
или
str = "12345678901234567890"
out = ""
for i = 3 + 1, string.len(str) do
local st = string.sub(string.reverse(str), i, i)
out = out .. st
print(st)
end
print(out:reverse()) -- 12345678901234567
Задача 1: вставить строку “!!” начина с 6 символа с удалением без изменения длины исходной строки
str = "12345678901234567890"
function char_change( str, n, char )
return string.sub( str, 1, n-1 ) .. char .. string.sub( str, ( (n + char:len()) - 1 - str:len() ) )
end
s = char_change( str, 6, "!!" )
print( s ) -- 12345!!8901234567890
или
str = "12345678901234567890"
function char_change(str1, str2, pos)
return str1:sub(1,pos)..str2..str1:sub(pos+(str2:len()+1))
end
s = char_change(str, "!!", 6)
print(s) -- 12345!!8901234567890
Задача 2: вставить строку “!!!” начина с 6 символа без удаления
str = "12345678901234567890"
function char_insert( str, n, char )
return string.sub( str, 1, n-1 ) .. char .. string.sub( str, ( n - 1 - str:len() ) )
end
s = char_insert( str, 6, "!!!" )
print( s ) -- 12345!!!678901234567890
или
str = "12345678901234567890"
function char_insert(str1, str2, pos)
return str1:sub(1,pos)..str2..str1:sub(pos+1)
end
s = char_insert(str, "!!!", 6)
print(s) -- 12345!!!678901234567890
Задача: разложить строку на символы и поместить в массив
str = "12345678901234567890"
array = {}
for i = 1 , #str do
array[i] = str[10]:sub(i, i)
end
for i = 1 , #str do
print("array[" .. i .. "]: " .. array[i])
end
-- array[1]: 1
-- array[2]: 2
-- array[3]: 3
-- array[4]: 4
-- array[5]: 5
-- array[6]: 6
-- array[7]: 7
-- array[8]: 8
-- array[9]: 9
-- array[10]: 0
-- array[11]: 1
-- array[12]: 2
-- array[13]: 3
-- array[14]: 4
-- array[15]: 5
-- array[16]: 6
-- array[17]: 7
-- array[18]: 8
-- array[19]: 9
-- array[20]: 0
Задача: перевести строку с разделителем “;” в таблицу (масив)
function string:split( inSplitPattern, outResults )
if not outResults then
outResults = { }
end
local theStart = 1
local theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
while theSplitStart do
table.insert( outResults, string.sub( self, theStart, theSplitStart-1 ) )
theStart = theSplitEnd + 1
theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
end
table.insert( outResults, string.sub( self, theStart ) )
return outResults
end
STR = "<sip:4991234567@10.10.10.100>;reason=user-busy;counter=1;privacy=off"
TBL = STR:split(";");
for i = 1, #TBL do
print(i .. ") " .. TBL[i])
end
--------------------------------------------------------------------------------------------------
Результат:
1) <sip:4991234567@10.10.10.100>
2) reason=user-busy
3) counter=1
4) privacy=off