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

21 Авг 2019 в 06:28
167 +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 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 94 956 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир