Столкнулся тут на днях с таким глюком, что ValueOperator Count string occurences of text1 in text2 (text1, text2) не всегда работает правильно в моем квесте версии 4.3, потратил много нервов. Там всё очень странно получалось он мог сработать пару раз потом пару раз не сработать, и т.д.
В общем, если вдруг кто-то столкнётся с подобным то вот есть решение написанное на луа, пользоваться точно так же как и оператором
function GetValue()
delimiter = channel.GetChild(0):GetText()
text = channel.GetChild(1):GetText()
if string.find("", delimiter, 1) then -- check for empty delimiter
return 0
end
res = 0
pos = 1
while true do
local first, last = string.find(text, delimiter, pos)
if first then
res = res + 1
pos = last + 1
else
break
end
end
return res
end
Привет, DimiS.
Как дополнение - вариант оператора, опубликованного тобой, но помедленнее и не глючит с поиском в строке кол-ва копий знака '.' (твой, почему то возвращает общее кол-во символов, если искать точку):
function GetValue()
delimiter = channel.GetChild(0):GetText()
text = channel.GetChild(1):GetText()
local pos=0
local res=0
local tMax1 = string.len(delimiter)
local tMax2 = string.len(text)
while pos<tMax2 do
if string.sub(text,pos+1,pos+tMax1)==delimiter then
res = res + 1
pos = pos+tMax1
else
pos = 1 + pos
end
end
return res
end