Как «раскрыть» экранирование определённого символа? Как "раскрыть" экранирование определённого символа?
Т.е., дана строка:qwerty\|asdfg\\|zxcvb\`123\\\|456\\\789
Её надо, соответственно, привести к виду:qwerty|asdfg\|zxcvb\`123\456\\789
Т.е. надо убрать экранирование символа |, с учётом того, что сам символ экранирования - \ - может экранироваться.

21 Авг 2019 в 06:28
185 +1
0
Ответы
1

Для "раскрытия" экранирования определённого символа, нужно использовать метод replace() в цикле, который будет проходить по строке и заменять все вхождения "\|" на "|" (с учётом того, что "\" нужно заменить на другой символ, чтобы избежать дальнейшего экранирования).

Пример кода на Python:

def unescape_char(input_string, char):
escape_char = '\\'
output_string = input_string.replace(escape_char+escape_char+char, '_temp_') # заменяем "\|" на временный символ "_temp_"
output_string = output_string.replace(escape_char+char, escape_char+escape_char) # заменяем "\|" на "|"
output_string = output_string.replace('_temp_', char) # возвращаем временный символ на место символа "|"
return output_string
input_string = 'qwerty\\|asdfg\\\\|zxcvb\\`123\\\\\\|456\\\\\\789'
char_to_unescape = '|'
output_string = input_string
while True:
new_output_string = unescape_char(output_string, char_to_unescape)
if new_output_string == output_string: # если больше символов для раскрытия нет
break
output_string = new_output_string
print(output_string)

Этот код позволит "раскрыть" экранирование символа "|" в заданной строке.

20 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир