В файле настроек моего приложения каждая строка имеет вид имя = значение (пример: цвет = красный ).Имена определяются приложением, а значения - текст, набираемый пользователем.
Поскольку формат файла требует одну настройку на строку, возникает проблема, если значение пользователя содержит разрыв строки ("\ n", ASCII 10): это приведет к сбою синтаксического анализатора (или позволит им вставить поддельные name = value записи с недопустимыми именами).Однако я хочу, чтобы пользователь мог использовать этот символ, поэтому мне нужно как-то его избежать: например, s = s.Replace("\n", "\\n");
Однако пользователь может также ввести двухсимвольную последовательность "\"+ «н».Поэтому предположим, что у меня есть произвольная неприятная строка, такая как "ABC \ n \\ n \\\\ n \ n \\\ nXYZ" (которая имеет два переноса строки и два литерала "\" + "n"последовательности в нем).Какой алгоритм безопасно (i) экранирует строку, чтобы убедиться, что она не содержит символов новой строки, а затем (ii) перевернул процесс, чтобы восстановить исходную строку?