Vanilla JS, не может заменить обратную косую черту в строке, извлеченной из DOM - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь заменить все вхождения \ в строке, но не могу найти способ, даже после поиска в Интернете и здесь.

Это то, что я пытался:

$ node
> var x = 'foo\bar\base'
> x.replace(/\\/g, '/');
'foo\bar\base'

Я ожидаю foo/bar/base, но строка остается неизменной.

То же самое с split():

> x.split('\\')
[ 'foo\bar\base' ]

Контекст : это отDOM, я получаю эту строку с

var node = document.querySelector(sel);
node.innerText.replace(/\\/g, '/');

Редактировать Существует путаница между моей попыткой в ​​ и тем, что я могу иметь в реальном браузере, проверьте @JeffreyWesterkamp комментарий в этот ответ

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Я нашел решение:

node.innerText.split('\\').join("/")
0 голосов
/ 04 июня 2018

экранирование обратной косой черты в исходной строке:

var x = 'foo\\bar\\base'

объяснение: \ является экранирующим символом по умолчанию - в вашей исходной строке каждая пара \b является пробелом - для включения обратной косой чертыв строковом литерале вам нужно его экранировать, т.е. \\

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