Побег персонажа, зная только его индекс - PullRequest
0 голосов
/ 08 марта 2020

Я ищу экранирующий символ \n, знающий только его индекс. Я НЕ ищу замену самого символа, а скорее "добавляю" escape-символ к существующему \n, эффективно экранируя его.

Например, в JavaScript: '\\' + '\n' === '\\\n'

Я ищу \\n, а не \\\n.

Повторюсь, я НЕ хочу полностью заменять \n. Я прекрасно знаю, '\n'.replace('\n', '\\n') сделает то, что я ищу. Я просто хочу добавить экранирующий символ к существующей новой строке. Есть ли причина, по которой JS предшествует буквальному обратному символу sh и не выходит за символ новой строки?

'\\' + '\'' === "\\'"

Полагаю, мне интересно, почему символы новой строки ведут себя по-разному. Спасибо за любые идеи!

1 Ответ

1 голос
/ 08 марта 2020

Невозможно добавить бэкслу sh к персонажу, чтобы избежать его. Например, с символом новой строки, от '\n' до Javascript, это строка, содержащая один код символа: 10.

for (const char of '\n') {
  console.log(char.charCodeAt());
}

На самом деле n (и буквального обратного слова sh) нигде нет - \n - это просто соглашение, которое программисты используют и понимают для обозначения новая строка. Если строка состоит из литерала backsla sh и литерала n, коды символов совершенно разные: есть код символа 92 (для backsla sh) и код символа 110 (для n).

for (const char of '\\n') {
  console.log(char.charCodeAt());
}

Ваш единственный вариант - полностью заменить буквальный символ новой строки обратным слэ sh и n ('\n'.replace('\n', '\\n') - или для более общего решения). создать карту или объект из буквальных символов и их escape-последовательностей)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...