20 Мая 2024, 05:52:42
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > База исходников (cgr/igr) > Lua Script вместо Count string occurences of text1 in text2 (text1, text2)
Lua Script вместо Count string occurences of text1 in text2 (text1, text2)
(Прочитано 5208 раз)
  [1]
Печать
DimiS | **** | Старожил | Сообщений: 284 | « 21 Июня 2010, 14:51:02 »
Lua Script вместо Count string occurences of text1 in text2 (text1, text2) |
0
Столкнулся тут на днях с таким глюком, что 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
dfx | ** | Пользователь | Сообщений: 95 | «Ответ #1 23 Июня 2010, 06:15:11 »
Re: Lua Script вместо Count string occurences of text1 in text2 (text1, text2) |
1
Привет, 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
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > База исходников (cgr/igr) > Lua Script вместо Count string occurences of text1 in text2 (text1, text2)
Перейти в: