Почему этот код печатает AAC
вместо ожидаемого A$`C
?
console.log('ABC'.replace('B', '$`'));
== >
AAC
И как заставить его дать ожидаемый результат?
Почему этот код печатает AAC
вместо ожидаемого A$`C
?
console.log('ABC'.replace('B', '$`'));
== >
AAC
И как заставить его дать ожидаемый результат?
console.log('ABC'.replace('B', "$$`"));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
Чтобы вставить $, вы должны передать $$, потому что $`:
Вставляет часть строки, которая предшествует согласованной подстроке.
Другие шаблоны:
Скрипка:
Кроме того, на ссылку ссылки, которую я опубликовал выше, есть еще больше. Если у вас все еще есть какие-либо проблемы или сомнения, вы, вероятно, можете найти там ответ, снимок экрана был взят из ссылки, размещенной в начале ответа.
EDIT:
На мой взгляд, стоит сказать, что любой шаблон, который не соответствует указанному выше , не должен быть экранирован, следовательно $
doesn ' t нужно сбежать, такая же история происходит с $AAA
.
В комментариях выше пользователь спросил, почему вам нужно "убежать" от $с другим $: несмотря на то, что я не совсем уверен в этом, я думаю, что также стоит отметить, из того, что мы сказали выше, что любой недопустимый шаблон не будет интерпретироваться, поэтому я думаю (и подозреваю, на данный момент), что $$ - очень частный случай, поскольку он охватывает случаи, когда вам нужно заменить матч на знак доллара, за которым следует символ "с блокировкой шаблона", например, галочка (`) (или действительно как и как другая).
В любом другом случае знак доллара не должен быть экранирован, поэтому, вероятно, имеет смысл, что они решили создать такое конкретное правило, иначе вам понадобилось бы избегайте $else else (и я думаю, что это могло повлиять на любой строковый объект, потому что это означало бы, что даже в var a = "hello, $ hey this one is a dollar";
вам нужно было бы избежать $
).
Если вы все еще заинтересованы и хотите прочитать больше, проверьте также:
http://www.regular-expressions.info/javascript.html#replace
Скрипт с большим количеством случаев:
В знаке replacement
знак доллара $
имеет особое значение и используется, когда форма данных соответствует совпадению в replacement
.
MDN: String.prototype.replace(): Указание строки как параметра
$$ Вставляет "$".
$ `Вставляет часть строки, которая предшествует согласованной подстроке.
Пока $
не приводит к комбинации, которая имеет особое значение, тогда она будет обрабатываться как обычный char. Но вы все равно должны всегда записывать его как $$
в замену, потому что иначе он может не сработать в будущем, если будет добавлена новая комбинация $x
.