Робота з рядками в jаvascript виконана у форматі методів рядкових об'єктів, але допускає використання функціональності інших, наприклад, масивів, чисел та описів.
Метод jаvascript replace має особливе значення, часто його важко замінити іншими комбінаціями.
Синтаксис і приклад застосування
Для опису рядків застосовуються символи подвійного і одиночного апострофа: «"» і «'». Для запису регулярного виразу прийнято використання похилої риски «/». Але не слід забувати, що пара символів «//» - це не запис порожнього регулярного виразу, а коментар.
В даному прикладі конструкція jаvascript 'text' replace працює лише з одним символом: 'a' і 'А'. Вираз (1) не використовує ніяких додаткових вказівок (опцій пошуку), тому метод змінює тільки перше входження літери 'а'. Наступні два вирази показують, сенс застосування опції пошуку i - регістр символу (рядка). Застосування опції g - дозволяє замінити всі входження символу (рядка).
Покращений приклад застосування
З точки зору сприйняття і розуміння, наведений приклад jаvascript replace не працює налагоджено: важко візуально виявити виконану заміну. Якщо застосувати цей метод для заміни зроблених замін» на тег зміни кольору, то буде виконана хороша робота і сприйняття роботи функції істотно покращиться.
Вихідна рядок змінена. Після формування рядка приклад застосування методу jаvascript replace виходить рядок 'dst'. До неї застосовується також метод replace з метою отримання рядки 'dst_replace', в якій шукане входження (позначено зеленим кружечком) і всі заміни будуть позначені синім кольором і іншим розміром.
У рядку заміни використані символи '$&' які означають "вставити знайдене входження". Це дуже зручна можливість. Фактично розробник отримує можливість написати регулярний вираз, результат якого можна відстежити при формуванні рядка результату.
Використання результату пошуку
Застосувавши jаvascript replace, розробник може отримати (як результат виконання регулярного виразу): $& - шукане; $` - той, що йде до шуканого; $' - той, що йде після шуканого. З перерахованого, доцільно використовувати тільки перше, хоча досвідчений розробник (або завдання того вимагає) може використовувати всі варіанти. Є ще можливість використовувати конструкцію $n $nn, що означає звернення до n-ному збігом регулярного виразу. Але бажано уникати застосування цієї можливості.
За загальною логікою, метод jаvascript replace спрямований на підвищення зручності роботи з рядками і реалізує механізм гнучкої обробки рядків. Прив'язка до конкретного входженню обмежує гнучкість алгоритму, а вибір того, що йде до знайденого збігу або після нього, може створити громіздкий результат.
Функція в конструкції jаvascript replace
Замість другого параметра методу можна використовувати функцію, результат роботи якої буде підставлена замість виявленого збігу.
У цьому прикладі у разі збігу регулярного виразу викликається функція scChange(), яка визначає кількість одержуваних параметрів і формує висновок.
Тут функція не робить нічого істотного, а демонструє зміст одержуваних нею параметрів. Після кожного звернення jаvascript replace, перенесення рядка "" використовується як роздільник. В результаті виходить приблизно наступне:
Видно, що кожен раз в функцію передається три параметра: перший - шукана підрядок; другий - позиція її входження; третій - вихідна рядок. В залежності від того, яке використовується регулярний вираз, одержувані функцією, дані будуть суттєво відрізнятися і за кількістю, і за змістом.
Особливості застосування методу
jаvascript replace - інструмент для гнучкої обробки рядків. Використання в якості другого параметра функції робить цей інструмент не тільки гнучким, але і дивно різноплановим.
Фактично мова браузера надає розробникові можливість формулювати регулярний вираз в якості умови прийняття рішення, яке виконує функція. Ніяких особливих обмежень на функцію не накладається, можливість виявлення кількості переданих параметрів доступна за визначенням: це класичний функціонал jаvascript. Трудність складають самі регулярні вирази. Потрібно бути гранично уважними при їх складанні і не прагнути одним виразом вирішити поставлену задачу. Частіше зручніше проводити розбирання необхідної рядка поетапно. Це простіше, надійніше і дає контрольований алгоритм і прозорий результат.