Текст
String Escape
Екранувати текст у рядковий літерал (лапки, backslash, керівні символи) для вставки в код, або розекранувати назад.
Щоб вставити текст із лапками, переносами рядків чи backslash усередину рядкового літерала в коді, ці символи потрібно екранувати — інакше вони передчасно завершать рядок або будуть витлумачені неправильно. Інструмент екранує й розекранує текст під конкретний синтаксис.
Як користуватися
- Екранування: вставте текст і оберіть цільовий контекст (JS-рядок, JSON, shell тощо) — спецсимволи замінюються на відповідні escape-послідовності.
- Розекранування: вставте вже екранований рядок, щоб отримати оригінальний текст назад.
- Різні контексти екранують той самий символ по-різному — переконайтеся, що обрали правильний режим для місця вставки.
Типові сценарії
- Вставка багаторядкового тексту чи тексту з лапками в змінну коду без ручного розставляння backslash.
- Підготовка рядка для shell-команди, де лапки й спецсимволи можуть зламати виконання.
- Розекранування рядка, скопійованого з логів чи JSON-відповіді, для читання оригінального тексту.
Що варто памʼятати
Той самий символ (наприклад, подвійна лапка) екранується по-різному залежно від контексту — JS-рядок, JSON і shell мають власний синтаксис і власний набір спецсимволів.
Подвійне екранування (екранування вже екранованого тексту) — поширена помилка при вставці даних крізь кілька шарів (наприклад, JSON усередині shell-команди).
Стаття про цей інструмент: String Escape: чому той самий текст треба екранувати по-різному
Часті запитання
Що саме робить екранування?
Воно перетворює лапки, зворотні слеші та керуючі символи (як-от розриви рядків чи табуляції) на дійсні екрановані послідовності в межах рядкового літералу, щоб текст можна було вставити як є у вихідний код.
Для чого потрібні стиль лапок та опція unicode?
Стиль лапок (подвійні, одинарні чи зворотні) визначає, який символ екранується, щоб не зламати рядок, а опція \uXXXX перетворює не-ASCII символи на екрановані unicode-послідовності замість того, щоб залишити їх як є.
Чи надсилається вставлений текст на сервер?
Ні, екранування й його скасування повністю виконуються в браузері через JavaScript, жодні дані не надсилаються онлайн.
Що робити, якщо текст проходить через кілька контекстів підряд?
Екранувати потрібно в правильному порядку: спершу для внутрішнього контексту (наприклад, JSON), потім для зовнішнього (наприклад, shell-команда, у яку вставляється цей JSON). Переплутаний порядок чи пропущений рівень — типова причина, чому «правильно екранований» рядок все одно ламається на практиці.
Чому та сама лапка екранується по-різному в різних контекстах?
Кожен контекст (JS-рядок, JSON, shell, regex) має власний синтаксис зі своїм набором спецсимволів і власним способом їх екранування — тому правильне екранування залежить від того, куди саме вставляється текст, а не від самого тексту.