Jak wykonać poprawne szukanie napisów i zamienić je w JavaScript bez żadnego udziału REGEX?Jak wykonać "ciągłe" wyszukiwanie ciągów i zastępować je w JavaScript, bez REGEX
Wiem, że doktorzy mówią, że jeśli pierwszym argumentem dla String.prototype.replace()
jest ciąg, a nie wyrażenie regularne, to spowoduje literalną zamianę. Praktyka pokazuje, że nie jest do końca prawda:
"I am a string".replace('am', 'are')
--> "I are a string"
OK
"I am a string".replace('am', 'ar$e')
--> "I ar$e a string"
nadal OK
"I am a string".replace('am', 'ar$$e')
--> "I ar$e a string"
NIE OK!
Gdzie jest drugi znak dolara? Czy szuka czegoś takiego jak $1
, aby zastąpić dopasowanie z REGEX ..., które nigdy nie było używane?
Jestem bardzo zagubiony i sfrustrowany, jakieś pomysły?
Drugi znak dolara zostanie zjedzone powodu [to] (https: //developer.mozilla .org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace # Specifying_a_string_as_a_parameter). –
Pozostaje pytanie, dlaczego te dziwactwa są nawet aktywne, ponieważ nie korzystam z regex? Wydaje mi się głupia. –
@TonyBogdanov, ponieważ jest zdefiniowany w [15.5.4.11 String.prototype.replace (searchValue, replaceValue)] (http://www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.11). Jeśli chcesz wiedzieć, dlaczego api został zaprojektowany w ten sposób, musisz zapytać osoby, które zaangażowały się w tę decyzję. Ale nawet jeśli nie używasz wyrażenia regularnego, może to być przydatne np. wstaw trochę znaków do ciągu znaków na podstawie wartości wyszukiwania: '" test 1234 ".replace (" 12 "," $ &-"); " –