Str.replace: приклади ефективного застосування

121 0 Новини високих технологій

Метод str.replace доповнює можливості рядків. Для кожного рядка можна визначити, яку її частину необхідно замінити на іншу послідовність символів. В якості рядки заміни може виступати регулярне вираз, заміна виконується для всіх однакових примірників, а вихідна рядок не змінюється.

Традиційне застосування методу replace

Синтаксис str.replace простий: рядок замінити вираз, рядок заміни. Вихідна рядок і рядок заміни можуть містити будь-які символи у межах синтаксису javascript, а замінити вираз являє собою як звичайний рядок, так і регулярний вираз.


Str.replace: приклади ефективного застосування
Регулярний вираз може бути визначене безпосередньо у методі або за допомогою об'єкта RegExp. Відсутність специфічних елементів «регулярки» у рядку, яка замінюється на рядок заміни, не грає ролі.
Str.replace: приклади ефективного застосування
Важливо розглядати перший параметр методу як регулярний вираз на тій простій підставі, що так поступає javascript, і це дозволяє уникнути несподіваних помилок.

Функціональне застосування методу

У мові браузера розробник може використовувати функцію практично в кожному методі. javascript str.replace - не виняток. Будь-яка функція викликається в момент збігу у вихідній рядку підрядка пошуку. Викликається функція отримує інформацію про те, що саме і в якій позиції виявлено. Функція може бути універсальною і обслуговувати різні рядки, оскільки в неї також передається вихідна рядок.
Str.replace: приклади ефективного застосування
Результат, який видає функція scFuncReplace, підставляється замість знайденого входження. Якщо рядок заміни дорівнює "-" то загальний результат має очевидний сенс, якщо прибрати "-" і розкоментувати рядок "*!*", то ефект буде не таким очікуваним.


Має сенс також не забувати, що звичний спосіб позначення патерну, який шукається з метою заміни - "/" у вигляді "//" інтерпретується як коментар і все, що випливає за цією парою символів, в більшості випадків значення не має. Однак це не заважає обчислювати рядок патерну у вираженні, хоча сумнівно, що пошук з заміною за "//" має значення.

Семантика і обробка рядкової інформації

Можливість виклику функції в методі str.replace являє собою ефективне рішення в контексті обробки інформації, а не заміни входжень одних рядків на інші. Просто заміна має значення в простих алгоритмах. Наприклад, можна виправити помилки введення відвідувача сторінки:
  • коми замість крапок;
  • російські літери "о" в словах на латиниці;
  • реально помилкові символи;
  • зайві символи тощо
  • Рядки javascript мають семантичне навантаження і можуть нести в собі ситуативний або контекстуальний зміст. У першому випадку мова може йти про те, щоб по вихідній рядку формувати результат, тобто функція через оператор return вносить зміни у вихідний рядок і видає результат. У другому випадку вихідна рядок управляє формуванням результату взагалі, тобто зовсім в іншому контексті, в іншій інформаційній середовищі.
    Str.replace: приклади ефективного застосування
    Вихідна рядок цілком може бути семантично навантаженим пропозицією, а розробнику доручено розробити алгоритм, при якому початкове пропозицію - мета, а результат обробки пропозиції - відповідь на вихідну інформацію.
    Якщо абстрагуватися від символів і орієнтуватися на рядки у якості пропозиції (пам'ятаєте, що в структуру речення входять слова і фрази), то застосування str.replace піднімається на якісно більш високий рівень.

    Рекурсивна семантика в обробці рядків

    Проблема полягає в тому, що при використанні str.replace js і регулярних виразів одиницею уваги є окремий символ, а не слово. Не можна сформулювати «регулярку» для роботи зі словами, фразами і пропозиціями - не той масштаб. Однією обробкою рядків як послідовностей символів можна обійтися в мінімально значущих випадках. Практично всі реальні завдання орієнтовані на використання семантично значимої інформації, тобто від рівня елементарних символів необхідно перейти в рівень слів - символів фраз - як систем слів, але теж символів у контексті пропозицій.
    Str.replace: приклади ефективного застосування
    Рекурсивне рішення задачі, умови якої семантично значущі інформаційні одиниці представляються у форматі окремих символів і потрапляють в область «компетенції» регулярних виразів в контексті str.replace, дозволяє розробляти експертні та ефективні алгоритми обробки інформації.