"Магические" символы

Lance_Sterling

Известный
Автор темы
956
336
Версия MoonLoader
.026-beta
как удалить "магические" символы для поиска в Lua? А лучше вообще отключить все регулярные выражения.
Пытался типо так:
Lua:
function deleteMagicSymbols(text)
    text = text:gsub('%.', '%%%.')
    text = text:gsub('%-', '%%%-')
    text = text:gsub('%$', '%%%$')
    text = text:gsub('%^', '%%%^')
    text = text:gsub('%+', '%%%+')
    text = text:gsub('%(', '%%%(')
    text = text:gsub('%)', '%%%)')
    text = text:gsub('%[', '%%%[')
    text = text:gsub('%]', '%%%]')
    text = text:gsub('%?', '%%%?')
    text = text:gsub('%*', '%%%*')
    text = text:gsub('%%', '%%%%')
    return text
end
но крашит игру когда запускаю такое.
 
Последнее редактирование:
Решение
да да ща сделаю

Lua:
function stringUnplain(text)
    local arr = stringToArray(text)
    for i, let in ipairs(arr) do
        if ("().%+-*?[]^$"):find(let, 1, true) then
            arr[i] = "%" .. let
        end
    end
    return table.concat(arr)
end
1689168326592.png

Rice.

Известный
Модератор
1,753
1,615
как удалить "магические" символы для поиска в Lua? А лучше вообще отключить все регулярные выражения.
Пытался типо так:
Lua:
function deleteMagicSymbols(text)
    text = text:gsub('%.', '%%%.')
    text = text:gsub('%-', '%%%-')
    text = text:gsub('%$', '%%%$')
    text = text:gsub('%^', '%%%^')
    text = text:gsub('%+', '%%%+')
    text = text:gsub('%(', '%%%(')
    text = text:gsub('%)', '%%%)')
    text = text:gsub('%[', '%%%[')
    text = text:gsub('%]', '%%%]')
    text = text:gsub('%?', '%%%?')
    text = text:gsub('%*', '%%%*')
    text = text:gsub('%%', '%%%%')
    print(text, -1)
    return text
end
но крашит игру когда запускаю такое.
Lua:
function stringUnplain(text)
    local arr = stringToArray(text)
    for i, let in ipairs(arr) do
        if let:find("().%+-*?[]^$", 1, true) then
            arr[i] = "%" .. let
        end
    end
    return table.concat(arr)
end


function stringToArray(text)
    local arr = {}
    for s in text:gmatch('.') do
        table.insert(arr, s)
    end
    return arr
end
 
  • Вау
Реакции: Lance_Sterling

Lance_Sterling

Известный
Автор темы
956
336
Lua:
function stringUnplain(text)
    local arr = stringToArray(text)
    for i, let in ipairs(arr) do
        if let:find("().%+-*?[]^$", 1, true) then
            arr[i] = "%" .. let
        end
    end
    return table.concat(arr)
end


function stringToArray(text)
    local arr = {}
    for s in text:gmatch('.') do
        table.insert(arr, s)
    end
    return arr
end
1689168076902.png

ничего не меняется

1689168105667.png

в консоли тоже
 
  • Нравится
Реакции: Rice.

Rice.

Известный
Модератор
1,753
1,615
да да ща сделаю

Lua:
function stringUnplain(text)
    local arr = stringToArray(text)
    for i, let in ipairs(arr) do
        if ("().%+-*?[]^$"):find(let, 1, true) then
            arr[i] = "%" .. let
        end
    end
    return table.concat(arr)
end
1689168326592.png
 
  • Влюблен
Реакции: Lance_Sterling

Lance_Sterling

Известный
Автор темы
956
336

Rice.

Известный
Модератор
1,753
1,615
  • Нравится
Реакции: Lance_Sterling

Rice.

Известный
Модератор
1,753
1,615
щас попробую просто через то, где мне надо удалить это
Обновил функцию, чтобы не таскать за собой две функции
Lua:
function stringUnplain(text)
    local arr = {}
    for world in text:gmatch('.') do
        arr[#arr + 1] = (('().%+-*?[]^$'):find(world, 1, true) and '%' or '') .. world
    end
    return table.concat(arr)
end

print(stringUnplain('HUY [ID:111] (RANG: S++$)'))
 
Последнее редактирование:
  • Нравится
Реакции: Lance_Sterling