Тип данных String в JS

В этой статье вы познакомитесь со строками в JavaScript.

Строки (string) — это примитивный тип данных для работы с текстом. 

const name = 'Андрей';

Создание строки

Чтобы задать строку в JavaScript, текст нужно с двух сторон закавычить. Кавычки можно использовать тремя разными способами.

  • Одинарные кавычки: 'Привет'.
  • Двойные кавычки: "Привет".
  • Обратные апострофы `Привет`.
// примеры строк с разными кавычками
const name = 'Андрей';
const name1 = "Даня";
const result = `Нас зовут ${name} и ${name1}`;

Одинарные и двойные кавычки практически одинаковы — можно использовать любой из этих вариантов.

Обратные апострофы обычно используются, когда нужно включить переменные или выражения в строку. Это делается путем обертывания переменных или выражений такой конструкцией ${переменная_или_выражение} — как в примере выше.

Одни кавычки можно использовать внутри других — для этого и нужны одинарные и двойные кавычки.

const name = 'Меня зовут "Андрей".';

С одинаковыми кавычками так не получится. 

const name = 'Меня зовут 'Андрей'.'; // синтаксическая ошибка

Доступ к символам в строке

Получить определенные символы в строке можно двумя способами.

• С помощью квадратных скобок []. Представьте, что строка — это массив, где каждый элемент — символ.

const a = 'привет';
console.log(a[1]); // Вывод: "р"

• С помощью метода charAt(). Методу нужно передать индекс нужного символа.

const a = 'привет';
console.log(a.charAt(1)); // Вывод: "р"

Строки — неизменяемый тип данных 

Строки неизменяемы. Это значит, что изменить определенный символ строки не получится.

let a = 'привет';
a[0] = 'П';
console.log(a); // Вывод: "привет"

Тем не менее, ничто не мешает просто задать новое значение строке:

let a = 'привет';
a = 'Привет';
console.log(a); // Вывод: "Привет"

JavaScript чувствителен к регистру

Язык JavaScript чувствителен к регистру. Это значит, что заглавные и строчные буквы воспринимаются в JS как разные значения.

const a = 'a';
const b = 'A'
console.log(a === b); // Вывод: false

Многострочные строки

Многострочные строки — это переменные типа string на несколько строчек кода.

Чтобы создать многострочную строку, нужно испоьзовать либо оператор +, либо оператор \.

// использование оператора +
const message1 = 'Это длинный текст, ' +
    'который растягивается на несколько ' + 
    'строк в коде.'

// использование оператора \
const message1 = 'Это длинный текст, \
который растягивается на несколько \
строк в коде.'

Длина строки

Чтобы узнать длину строки, используйте встроенное свойства length.

const a = 'привет';
console.log(a.length); // 6

 Строка как объект

Создать строку можно и как объект — с помощью ключевого слова new.

const a = 'привет';
const b = new String('привет');

console.log(a); // "привет"
console.log(b); // "привет"

console.log(typeof a); // Вывод: "string"
console.log(typeof b); // Вывод: "object"

Примечание. Не рекомендуется использовать строковые объекты — это замедляет работу программы.

Методы строк

В JavaScript существуют различные методы строк, которые облегчают часто используемые действия.

Вот некоторые из них:

Метод Описание
charAt(индекс) Возвращает символ из строки по указанному индексу.
concat() Объединяет текст из двух или более строк и возвращает новую строку.
replace() Возвращает новую строку с некоторыми или всеми сопоставлениями с шаблоном, заменёнными на «заменитель» (обычно это строка).
split() Разбивает объект string на массив строк, разделяя строку.
substring(начало, конец) Возвращает подстроку строки между двумя индексами, или от одного индекса и до конца строки.
slice(начало, конец) Извлекает часть строки и возвращает новую строку без изменения оригинальной строки.
toLowerCase() Преобразовывает все символы переданной строки в нижний регистр.
toUpperCase() Преобразовывает все символы переданной строки в верхний регистр.
trim() Удаляет пробелы из строки.
includes() Проверяет, содержит ли строка заданную подстроку, и возвращает true или false соответственно.
search() Выполняет поиск строки и возвращает индекс совпадения.

Давайте рассмотрим некоторые методы на примере:

const text1 = 'привет';
const text2 = 'мир';
const text3 = '     JavaScript    ';

// соединяем две строки
const result1 = text1.concat(' ', text2);
console.log(result1); // Вывод: "привет мир"

// преобразовываем строку к верхнему регистру
const result2 = text1.toUpperCase();
console.log(result2); // Вывод: ПРИВЕТ

// убираем пробелы из строки
const result3 = text3.trim();
console.log(result3); // Вывод: JavaScript

// преобразовываем строку в массив
const result4 = text1.split();
console.log(result4); // ["привет"]

// «слайсим» строку
const result5= text1.slice(1, 3);
console.log(result5); // "ри"

Функция String()

Функция String() позволяет преобразовывать некоторые типы данных в строку. 

const a = 225; // тип number
const b = true; // тип boolean

// преобразовываем в строку
const result1 = String(a);
const result2 = String(b);

console.log(result1); // Вывод: "225"
console.log(result2); // Вывод: "true"

Экранирование специальных символов

В JS можно использовать символ обратной косой черты \ для включения специальных символов в строку. 

const name = 'Меня зовут \'Андрей\'.';
console.log(name); // Вывод: Меня зовут 'Андрей'.

Вот некоторые специальные символы, которые можно использовать в JavaScript:

Код Вывод
\" Отобразить двойную кавычку.
\\ Отобразить обратный слэш. 
\n Перевод каретки на новую строчку.
\r Возврат каретки.
\t Горизонтальный таб. 
Проверьте себя
1. Какой из способов записи строки позволяет встраивать переменные через `${}`?
AОдинарные кавычки '...'
BОбратные апострофы `...`
CДвойные кавычки "..."
DВсе три способа
2. Что выведет код `let s = 'привет'; s[0] = 'П'; console.log(s);`?
A'Привет'
B'привет'
CОшибку
Dundefined
3. Что вернёт `'привет'.length`?
A5
B7
Cundefined
D6
4. Какой метод строки удаляет пробелы в начале и конце строки?
Astrip()
Btrim()
Cclean()
Dslice()