169 похожих чатов

Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape

в Python?

Из доки:
» Escape all the characters in pattern except ASCII letters and numbers

9 ответов

40 просмотров
Daniil-Smolyakov Автор вопроса

function escapeString(str) local escapedStr = "" for i = 1, #str do local char = string.sub(str, i, i) if string.match(char, "[^%a%d]") then escapedStr = escapedStr .. "\\" .. char else escapedStr = escapedStr .. char end end return escapedStr end function unescapeString(str) local unescapedStr = "" local i = 1 while i <= #str do local char = string.sub(str, i, i) if char == "\\" then i = i + 1 char = string.sub(str, i, i) end unescapedStr = unescapedStr .. char i = i + 1 end return unescapedStr end local inputString = "Hello, \\world! 123" local escapedString = escapeString(inputString) local unescapedString = unescapeString(escapedString) print(inputString) print(escapedString) print(unescapedString)

ммм... у тебя старая версия питона что-ли? В питоне у этой функции именно задача убрать из строки символы, которые имеют специальное значение в библиотеке паттерн марчинга. В луа аналог со схожим смыслом функционала был-бы например таким (с обратными слешами лишнее, это я сделал чтобы всё это дело можно было легко скопипастить с выхлопа интерпретатора снова в строку): repl = { ['\\'] = '\\\\' } string.gsub('Hello, \\world! [_%w] 123', '[%^%$%(%)%%%.%[%]%*%+%-%?\\%.]', function(c) if repl[c] then return repl[c] else return '%'..(c) end end) -- Hello, \\world! %[_%%w%] 123 4 string.find('Hello, \\world! [_%w] 123', "Hello, \\world! %[_%%w%] 123") -- 1 24

Daniil-Smolyakov Автор вопроса
UtoECat
screenshot ммм... у тебя старая версия питона что-ли? В питон...

Ну я тоже долго не сидел) И мне нравится, что читается легко - никто после меня не будет полчаса сидеть думать, как это работает))

лучше узнай более точно что от тебя хотят по возможностям. А то может они этим аргументы SQL запроса экранировать будут...

Daniil Smolyakov
Ну я тоже долго не сидел) И мне нравится, что чита...

если просто заменить всё что не буквы-цифры, то ещё проще : string.gsub('Hello, \\world! 123', '[^%w ]', function(c) return '\\'..string.byte(c) end) -- Hello\44 \92world\33 123 3 print("Hello\44 \92world\33 123") -- Hello, \world! 123

Daniil-Smolyakov Автор вопроса
UtoECat
если просто заменить всё что не буквы-цифры, то ещ...

Запятую и восклицательный знак пропустил)

Daniil Smolyakov
Запятую и восклицательный знак пропустил)

нет не пропутиил, почитай код внимательно. Выхлоп функии выше - в принте аргументом

Daniil-Smolyakov Автор вопроса
UtoECat
нет не пропутиил, почитай код внимательно. Выхлоп ...

Да-да, норм. Я просто скопипастил и запустил, а у тебя не для этого пример)

Похожие вопросы

Обсуждают сегодня

Может кто встречал такое? Один набор данных, но в одном столбце кодировка нормальная, а в другом ироглифы. Как такое может быть?
Alexander
23
Всем привет. Подскажите, пожалуйста, почему не ищет русскую букву а? А английскую ищет. Полагаю что-то с кодировкой. Но как исправить это? procedure TfrmMain.btnOpenFileClic...
Евгений
7
И к какой архитектуре привязана Java?
Dmitry Olshansky
17
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Как это поможет если в архив положили папку?
Sasha Beep
8
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
Короче я тут узнал полный пиздец Что кучу постов которые я создавал через posted Спустя время не могу редактировать и менять Мол телега возвращае ошибку Это реально так ...
inc.
13
Карта сайта