String.raw()

String.raw() помогает получить строку в «сыром» виде. В такой строке последовательности вроде \n и \t остаются обычным текстом.

let text = String.raw`Первая строка\nВторая строка`;

console.log(text);

Результат:

Первая строка\nВторая строка

\n не превратился в перенос строки. JavaScript оставил обратный слеш и букву n как обычные символы.

Что такое String.raw()

String.raw() - это специальный метод для шаблонных строк. Его пишут перед обратными кавычками, поэтому он работает как тег для шаблонной строки.

let value = String.raw`Привет\nJavaScript`;

console.log(value);

Результат:

Привет\nJavaScript

Обычные строки и шаблонные строки обрабатывают escape-последовательности. String.raw() позволяет получить текст до такой обработки.

Синтаксис

Основная запись выглядит так:

String.raw`текст`;

Обратите внимание: здесь нет круглых скобок после raw. Метод стоит перед шаблонной строкой и получает ее содержимое.

let text = String.raw`A\tB`;

console.log(text);

Результат:

A\tB

Отличие от обычной строки

В обычной шаблонной строке \n становится переносом строки.

let text = `Первая строка\nВторая строка`;

console.log(text);

Результат:

Первая строка
Вторая строка

С String.raw() эта же запись остается одной строкой с символами \n.

let text = String.raw`Первая строка\nВторая строка`;

console.log(text);

Результат:

Первая строка\nВторая строка

Пример с путем

String.raw() может быть удобен, когда в строке много обратных слешей. Например, в путях Windows.

let path = String.raw`C:\Users\Elena\Documents`;

console.log(path);

Результат:

C:\Users\Elena\Documents

Без String.raw() такие строки часто приходится записывать с двойными обратными слешами.

Подстановки

Внутри String.raw() можно использовать подстановки, как в обычных шаблонных строках.

let userName = 'Elena';
let path = String.raw`C:\Users\${userName}\Documents`;

console.log(path);

Результат:

C:\Users\Elena\Documents

Текстовая часть остается сырой, а выражение внутри $ вычисляется как обычно.

Когда использовать

String.raw() нужен не каждый день. Чаще всего обычных строк достаточно.

Метод полезен, когда в строке важно сохранить обратные слеши как есть: например, в путях, шаблонах, примерах кода или текстах, где нужно показать \n, а не сделать перенос строки.

Итого

String.raw() возвращает содержимое шаблонной строки без обработки escape-последовательностей.

String.raw`A\nB`;

Результатом будет строка с символами \n, а не строка с переносом. Используйте этот метод точечно, когда действительно нужно сохранить обратные слеши.