в Python?
Из доки:
» Escape all the characters in pattern except ASCII letters and numbers
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
Ну я тоже долго не сидел) И мне нравится, что читается легко - никто после меня не будет полчаса сидеть думать, как это работает))
лучше узнай более точно что от тебя хотят по возможностям. А то может они этим аргументы SQL запроса экранировать будут...
если просто заменить всё что не буквы-цифры, то ещё проще : 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
Запятую и восклицательный знак пропустил)
нет не пропутиил, почитай код внимательно. Выхлоп функии выше - в принте аргументом
Да-да, норм. Я просто скопипастил и запустил, а у тебя не для этого пример)
Обсуждают сегодня