2 added
2 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>22 июл 2025</li>
2
<ul><li>22 июл 2025</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Расскажем, как создавать, изменять и использовать строки для решения различных задач.</p>
4
</ul><p>Расскажем, как создавать, изменять и использовать строки для решения различных задач.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
6
<p>Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.</p>
7
<p>Строки - это один из основных типов данных в JavaScript. Они используются для хранения и обработки текста: сообщений, имён пользователей, данных из форм и многого другого. Строки встречаются очень часто, они нужны буквально везде.</p>
7
<p>Строки - это один из основных типов данных в JavaScript. Они используются для хранения и обработки текста: сообщений, имён пользователей, данных из форм и многого другого. Строки встречаются очень часто, они нужны буквально везде.</p>
8
<p><strong>Содержание</strong></p>
8
<p><strong>Содержание</strong></p>
9
<ul><li><a>Что такое строка</a></li>
9
<ul><li><a>Что такое строка</a></li>
10
<li><a>Виды строк в JavaScript</a></li>
10
<li><a>Виды строк в JavaScript</a></li>
11
<li><a>Основные свойства строк</a></li>
11
<li><a>Основные свойства строк</a></li>
12
<li><a>Как склеивать строки</a></li>
12
<li><a>Как склеивать строки</a></li>
13
<li><a>Методы split() и join() для разбиения и объединения строк</a></li>
13
<li><a>Методы split() и join() для разбиения и объединения строк</a></li>
14
<li><a>trim() - убрать пробелы по краям</a></li>
14
<li><a>trim() - убрать пробелы по краям</a></li>
15
<li><a>toUpperCase() / toLowerCase() - изменить регистр</a></li>
15
<li><a>toUpperCase() / toLowerCase() - изменить регистр</a></li>
16
<li><a>includes() - проверить, есть ли подстрока</a></li>
16
<li><a>includes() - проверить, есть ли подстрока</a></li>
17
<li><a>indexOf() - найти, где начинается подстрока</a></li>
17
<li><a>indexOf() - найти, где начинается подстрока</a></li>
18
<li><a>replace() и replaceAll() - заменить часть строки</a></li>
18
<li><a>replace() и replaceAll() - заменить часть строки</a></li>
19
<li><a>Мини-практика</a></li>
19
<li><a>Мини-практика</a></li>
20
</ul><p>В JavaScript строка (тип данных string) - это упорядоченный набор символов. Она может содержать:</p>
20
</ul><p>В JavaScript строка (тип данных string) - это упорядоченный набор символов. Она может содержать:</p>
21
<ul><li>буквы и цифры;</li>
21
<ul><li>буквы и цифры;</li>
22
<li>пробелы и знаки препинания;</li>
22
<li>пробелы и знаки препинания;</li>
23
<li>специальные символы вроде \n (перенос строки) и \t (табуляция);</li>
23
<li>специальные символы вроде \n (перенос строки) и \t (табуляция);</li>
24
<li>любые символы из Unicode, включая эмодзи.</li>
24
<li>любые символы из Unicode, включая эмодзи.</li>
25
</ul><p>Этот тип данных позволяет хранить и обрабатывать текст в программах. С его помощью можно работать с именами пользователей, сообщениями, адресами сайтов, HTML‑кодом и другими текстовыми данными.</p>
25
</ul><p>Этот тип данных позволяет хранить и обрабатывать текст в программах. С его помощью можно работать с именами пользователей, сообщениями, адресами сайтов, HTML‑кодом и другими текстовыми данными.</p>
26
<p>Строки используются для вывода информации на экран, хранения данных, формирования URL и обмена данными между программами. Почти всё, что видит пользователь в браузере или что отправляется на сервер, так или иначе представлено в виде string.</p>
26
<p>Строки используются для вывода информации на экран, хранения данных, формирования URL и обмена данными между программами. Почти всё, что видит пользователь в браузере или что отправляется на сервер, так или иначе представлено в виде string.</p>
27
<p>Примеры строк:</p>
27
<p>Примеры строк:</p>
28
let empty = ""; // Пустая строка let str = "Это строка с \"кавычками\" и \\обратным слешем\\."; let ascii = "Hello, World!"; // Только ASCII-символы<p>В строках можно хранить не только обычный текст, но и код, например HTML или JSON:</p>
28
let empty = ""; // Пустая строка let str = "Это строка с \"кавычками\" и \\обратным слешем\\."; let ascii = "Hello, World!"; // Только ASCII-символы<p>В строках можно хранить не только обычный текст, но и код, например HTML или JSON:</p>
29
let html = "<div class='container'>Это контейнер</div>"; let json = '{"name": "John", "age": 30}';<p>Есть два способа записи строк: простые однострочные и многострочные шаблонные. Вид строки выбирают в зависимости от задачи: где-то важно встроить переменную, где-то - сохранить форматирование или удобочитаемость.</p>
29
let html = "<div class='container'>Это контейнер</div>"; let json = '{"name": "John", "age": 30}';<p>Есть два способа записи строк: простые однострочные и многострочные шаблонные. Вид строки выбирают в зависимости от задачи: где-то важно встроить переменную, где-то - сохранить форматирование или удобочитаемость.</p>
30
<p>Это текст, записанный в одинарные ('...') или двойные ("...") кавычки. Внутри строки можно использовать любые символы, кроме тех, что совпадают с выбранными кавычками. Чтобы добавить такие кавычки внутрь строки, нужно использовать экранирование, то есть поставить перед кавычкой знак слеша \.</p>
30
<p>Это текст, записанный в одинарные ('...') или двойные ("...") кавычки. Внутри строки можно использовать любые символы, кроме тех, что совпадают с выбранными кавычками. Чтобы добавить такие кавычки внутрь строки, нужно использовать экранирование, то есть поставить перед кавычкой знак слеша \.</p>
31
let single = 'Это простая строка'; let double = "Это тоже простая строка"; let escaped = "Он сказал: \"Да!\"";<p>В простых строках перенос нельзя записать напрямую - для этого нужно использовать специальный символ \n. Он указывает на то, что в этом месте текст должен перейти на новую строку при выводе или обработке.</p>
31
let single = 'Это простая строка'; let double = "Это тоже простая строка"; let escaped = "Он сказал: \"Да!\"";<p>В простых строках перенос нельзя записать напрямую - для этого нужно использовать специальный символ \n. Он указывает на то, что в этом месте текст должен перейти на новую строку при выводе или обработке.</p>
32
let withNewline = "Первая строка\nВторая строка";<p>Это ещё один способ создания строк. Шаблонные строки заключаются в обратные кавычки (`...`).</p>
32
let withNewline = "Первая строка\nВторая строка";<p>Это ещё один способ создания строк. Шаблонные строки заключаются в обратные кавычки (`...`).</p>
33
<p><strong>Вставка переменных и выражений.</strong>В обычных строках для вставки переменных используется метод склейки, или конкатенация, в шаблонных строках вместо этого используется конструкция ${...}:</p>
33
<p><strong>Вставка переменных и выражений.</strong>В обычных строках для вставки переменных используется метод склейки, или конкатенация, в шаблонных строках вместо этого используется конструкция ${...}:</p>
34
let name = "Анна"; let greeting = `Привет, ${name}!`; console.log(greeting); // Привет, Анна!<p><strong>Автоматическое преобразование типов.</strong>Когда в шаблонной строке внутри конструкции ${...} используется переменная или выражение, которое не является строкой (например, число, булево значение или объект), JavaScript автоматически преобразует это значение в строку с помощью метода toString(), чтобы его можно было вставить в текст.</p>
34
let name = "Анна"; let greeting = `Привет, ${name}!`; console.log(greeting); // Привет, Анна!<p><strong>Автоматическое преобразование типов.</strong>Когда в шаблонной строке внутри конструкции ${...} используется переменная или выражение, которое не является строкой (например, число, булево значение или объект), JavaScript автоматически преобразует это значение в строку с помощью метода toString(), чтобы его можно было вставить в текст.</p>
35
let count = 3; // Создаём переменную count и присваиваем ей число 3 // Создаём шаблонную строку с текстом и вставкой переменной count // JavaScript берёт значение переменной count(3) и автоматически вставляет его в строку вместо ${count}` let message = `Количество товаров: ${count}`; // Выводим готовую строку в консоль console.log(message); // Результат: "Количество товаров: 3"<p>JavaScript сам преобразует число 3 в строку, чтобы вставить его в текст. Это происходит автоматически, поэтому можно подставлять любые значения и не преобразовывать их вручную.</p>
35
let count = 3; // Создаём переменную count и присваиваем ей число 3 // Создаём шаблонную строку с текстом и вставкой переменной count // JavaScript берёт значение переменной count(3) и автоматически вставляет его в строку вместо ${count}` let message = `Количество товаров: ${count}`; // Выводим готовую строку в консоль console.log(message); // Результат: "Количество товаров: 3"<p>JavaScript сам преобразует число 3 в строку, чтобы вставить его в текст. Это происходит автоматически, поэтому можно подставлять любые значения и не преобразовывать их вручную.</p>
36
<p>Внутри шаблонной строки можно использовать одинарные и двойные кавычки без экранирования. Экранирование требуется только для обратных кавычек (``) и символа доллара с фигурными скобками (${}).</p>
36
<p>Внутри шаблонной строки можно использовать одинарные и двойные кавычки без экранирования. Экранирование требуется только для обратных кавычек (``) и символа доллара с фигурными скобками (${}).</p>
37
let text = `Он сказал: "Это 'пример' текста"`; let escaped = `Экранированная обратная кавычка: \``;<p>В обычных строках перенос строки нельзя сделать напрямую. Для этого приходится писать \n. С шаблонными строками переносы можно добавлять прямо в коде - нажатием Enter.</p>
37
let text = `Он сказал: "Это 'пример' текста"`; let escaped = `Экранированная обратная кавычка: \``;<p>В обычных строках перенос строки нельзя сделать напрямую. Для этого приходится писать \n. С шаблонными строками переносы можно добавлять прямо в коде - нажатием Enter.</p>
38
let message = `Это многострочная строка в JavaScript.`; console.log(message);<p>Результат:</p>
38
let message = `Это многострочная строка в JavaScript.`; console.log(message);<p>Результат:</p>
39
Это многострочная строка в JavaScript.<p><strong>Неизменяемость (immutability).</strong>В JavaScript строки неизменяемы. Это значит, что, как только строка создана, её содержимое нельзя поменять. Если вы попытаетесь изменить символ или часть строки, это не сработает - JavaScript вместо этого создаст новую строку с результатом изменений.</p>
39
Это многострочная строка в JavaScript.<p><strong>Неизменяемость (immutability).</strong>В JavaScript строки неизменяемы. Это значит, что, как только строка создана, её содержимое нельзя поменять. Если вы попытаетесь изменить символ или часть строки, это не сработает - JavaScript вместо этого создаст новую строку с результатом изменений.</p>
40
let text = "Привет"; text[0] = "п"; // Попытка заменить первую букву console.log(text); // "Привет" - строка не изменилась<p>Чтобы изменить строку, нужно создать новую:</p>
40
let text = "Привет"; text[0] = "п"; // Попытка заменить первую букву console.log(text); // "Привет" - строка не изменилась<p>Чтобы изменить строку, нужно создать новую:</p>
41
-
let newText = text.replace("П", "п"); console.log(newText); // "привет"<p>Такое свойство делает работу безопаснее - что бы функция ни делала со строкой, исходная строка останется нетронутой. К тому же благодаря неизменяемости одну и ту же строку можно использовать в разных местах программы.</p>
41
+
let newText = text.replace("П", "п"); console.log(newText); // "привет"<p>Такое свойство делает работу бе��опаснее - что бы функция ни делала со строкой, исходная строка останется нетронутой. К тому же благодаря неизменяемости одну и ту же строку можно использовать в разных местах программы.</p>
42
<p><strong>Индексация.</strong>Каждый символ в строке имеет свой порядковый номер - индекс. Отсчёт начинается с нуля: первый символ - индекс 0, второй - индекс 1 и так далее. Последний символ всегда имеет индекс, равный длине строки минус один.</p>
42
<p><strong>Индексация.</strong>Каждый символ в строке имеет свой порядковый номер - индекс. Отсчёт начинается с нуля: первый символ - индекс 0, второй - индекс 1 и так далее. Последний символ всегда имеет индекс, равный длине строки минус один.</p>
43
<p>Чтобы получить доступ к символу по индексу, используйте квадратные скобки:</p>
43
<p>Чтобы получить доступ к символу по индексу, используйте квадратные скобки:</p>
44
let str = "JavaScript"; console.log(str[0]); // "J" - первый символ console.log(str[4]); // "S" - пятый символ console.log(str[9]); // "t" - последний символ<p>Это свойство полезно при проверке формата данных, например первой буквы в имени и в задачах на обработку текста: при переворачивании строки, поиске определённых символов и тому подобном.</p>
44
let str = "JavaScript"; console.log(str[0]); // "J" - первый символ console.log(str[4]); // "S" - пятый символ console.log(str[9]); // "t" - последний символ<p>Это свойство полезно при проверке формата данных, например первой буквы в имени и в задачах на обработку текста: при переворачивании строки, поиске определённых символов и тому подобном.</p>
45
<p><strong>Длина строки.</strong>Свойство length показывает количество символов в строке. Это число включает все буквы, цифры, пробелы и спецсимволы.</p>
45
<p><strong>Длина строки.</strong>Свойство length показывает количество символов в строке. Это число включает все буквы, цифры, пробелы и спецсимволы.</p>
46
let message = "Hello, world!"; console.log(message.length); // 13<p>Свойство length доступно только для чтения, и ему нельзя присвоить новое значение:</p>
46
let message = "Hello, world!"; console.log(message.length); // 13<p>Свойство length доступно только для чтения, и ему нельзя присвоить новое значение:</p>
47
let word = "Привет!"; word.length = 4; console.log(word); // "Привет!" console.log(word.length); // 7<p>Если строка пустая, length равен 0.</p>
47
let word = "Привет!"; word.length = 4; console.log(word); // "Привет!" console.log(word.length); // 7<p>Если строка пустая, length равен 0.</p>
48
<p>Это свойство может быть полезно, если нужно узнать размер текста перед обработкой. Ещё его можно использовать для проверки пользовательского ввода: достаточно ли длинный пароль, не превышает ли текст лимит.</p>
48
<p>Это свойство может быть полезно, если нужно узнать размер текста перед обработкой. Ещё его можно использовать для проверки пользовательского ввода: достаточно ли длинный пароль, не превышает ли текст лимит.</p>
49
<p><strong>Тип данных.</strong>В JavaScript строки - это примитивный тип данных. Они хранятся как простые значения и не являются объектами. Но при вызове метода вроде toUpperCase() или trim() JavaScript временно превращает строку в объект String, выполняет метод, а затем удаляет этот объект. Это происходит незаметно для разработчика.</p>
49
<p><strong>Тип данных.</strong>В JavaScript строки - это примитивный тип данных. Они хранятся как простые значения и не являются объектами. Но при вызове метода вроде toUpperCase() или trim() JavaScript временно превращает строку в объект String, выполняет метод, а затем удаляет этот объект. Это происходит незаметно для разработчика.</p>
50
<p>В JavaScript строки можно объединять в одну с помощью оператора +. Этот процесс называется конкатенацией. Когда два текста соединяются, получается новая строка, в которой содержатся тексты обеих частей.</p>
50
<p>В JavaScript строки можно объединять в одну с помощью оператора +. Этот процесс называется конкатенацией. Когда два текста соединяются, получается новая строка, в которой содержатся тексты обеих частей.</p>
51
<p>Пример простого склеивания:</p>
51
<p>Пример простого склеивания:</p>
52
let firstName = "Анна"; let lastName = "Иванова"; let fullName = firstName + " " + lastName; console.log(fullName); // "Анна Иванова"<p>Здесь между именем и фамилией мы добавили пробел, указав его как отдельную строку " ".</p>
52
let firstName = "Анна"; let lastName = "Иванова"; let fullName = firstName + " " + lastName; console.log(fullName); // "Анна Иванова"<p>Здесь между именем и фамилией мы добавили пробел, указав его как отдельную строку " ".</p>
53
<p>Можно объединять строки с переменными, при этом нестроковые переменные будут переведены в строки:</p>
53
<p>Можно объединять строки с переменными, при этом нестроковые переменные будут переведены в строки:</p>
54
let itemCount = 5; let message = "Количество смартфонов: " + itemCount; console.log(message); // "Количество смартфонов: 5"<p>Чтобы добавить текст в конец другой строки, можно использовать оператор += (присваивание с конкатенацией):</p>
54
let itemCount = 5; let message = "Количество смартфонов: " + itemCount; console.log(message); // "Количество смартфонов: 5"<p>Чтобы добавить текст в конец другой строки, можно использовать оператор += (присваивание с конкатенацией):</p>
55
let orderInfo = "Заказ содержит "; orderInfo += 10; orderInfo += " товаров"; console.log(orderInfo); // "Заказ содержит 10 товаров"<p><strong>Шаблонные строки.</strong>Мы уже говорили об этом способе раньше. Шаблонные строки удобнее, если текст большой или содержит много переменных. Они делают код более читаемым и избавляют от лишних плюсов.</p>
55
let orderInfo = "Заказ содержит "; orderInfo += 10; orderInfo += " товаров"; console.log(orderInfo); // "Заказ содержит 10 товаров"<p><strong>Шаблонные строки.</strong>Мы уже говорили об этом способе раньше. Шаблонные строки удобнее, если текст большой или содержит много переменных. Они делают код более читаемым и избавляют от лишних плюсов.</p>
56
let name = "Анна"; let age = 25; let message = `Привет, ${name}! Тебе уже ${age} лет.`; console.log(message); // "Привет, Анна! Тебе уже 25 лет."<p>Иногда нужно изменить строку: удалить или заменить её части, добавить новые элементы. Прямо со строкой это сделать нельзя, потому что этот тип данных неизменяем. Поэтому сначала текст превращают в массив. После того как все изменения внесены, массив снова собирают в строку.</p>
56
let name = "Анна"; let age = 25; let message = `Привет, ${name}! Тебе уже ${age} лет.`; console.log(message); // "Привет, Анна! Тебе уже 25 лет."<p>Иногда нужно изменить строку: удалить или заменить её части, добавить новые элементы. Прямо со строкой это сделать нельзя, потому что этот тип данных неизменяем. Поэтому сначала текст превращают в массив. После того как все изменения внесены, массив снова собирают в строку.</p>
57
<p>Для этого используют методы:</p>
57
<p>Для этого используют методы:</p>
58
<ul><li>split() - преобразует строку в массив.</li>
58
<ul><li>split() - преобразует строку в массив.</li>
59
<li>join() - преобразует массив в строку.</li>
59
<li>join() - преобразует массив в строку.</li>
60
</ul><p>Разберёмся, как они пишутся и когда применяются.</p>
60
</ul><p>Разберёмся, как они пишутся и когда применяются.</p>
61
<p>Метод split() используется, чтобы разбить строку на части и сохранить их в виде массива. Исходная строка при этом не меняется. Метод принимает два параметра:</p>
61
<p>Метод split() используется, чтобы разбить строку на части и сохранить их в виде массива. Исходная строка при этом не меняется. Метод принимает два параметра:</p>
62
<ul><li>separator - символ или подстрока, по которой нужно делить строку;</li>
62
<ul><li>separator - символ или подстрока, по которой нужно делить строку;</li>
63
<li>limit (необязательный параметр) - максимальное количество элементов в массиве.</li>
63
<li>limit (необязательный параметр) - максимальное количество элементов в массиве.</li>
64
</ul><p>Если не задать limit, строка будет разбита на все возможные части.</p>
64
</ul><p>Если не задать limit, строка будет разбита на все возможные части.</p>
65
<p>Метод работает так: он ищет в строке разделитель, отделяет всё, что идёт до него, и добавляет это в массив. Далее обрабатывает оставшуюся часть строки. Это продолжается до тех пор, пока не закончится строка или не будет достигнут лимит элементов.</p>
65
<p>Метод работает так: он ищет в строке разделитель, отделяет всё, что идёт до него, и добавляет это в массив. Далее обрабатывает оставшуюся часть строки. Это продолжается до тех пор, пока не закончится строка или не будет достигнут лимит элементов.</p>
66
<p>Например, у нас есть данные пользователя.</p>
66
<p>Например, у нас есть данные пользователя.</p>
67
let csvData = "Анна,25,Екатеринбург,example@gmail.com";<p>Нам нужно вывести данные в таком виде:</p>
67
let csvData = "Анна,25,Екатеринбург,example@gmail.com";<p>Нам нужно вывести данные в таком виде:</p>
68
Имя: Анна Возраст: 25 Город: Екатеринбург e-mail: example@gmail.com<p>Используем метод split() и превратим строку csvData в массив:</p>
68
Имя: Анна Возраст: 25 Город: Екатеринбург e-mail: example@gmail.com<p>Используем метод split() и превратим строку csvData в массив:</p>
69
let result = csvData.split(","); console.log(result); // ["Анна", "25", "Екатеринбург", "example@gmail.com"]<p>Метод split() делит строку на части по запятой и преобразует их в элементы массива result .</p>
69
let result = csvData.split(","); console.log(result); // ["Анна", "25", "Екатеринбург", "example@gmail.com"]<p>Метод split() делит строку на части по запятой и преобразует их в элементы массива result .</p>
70
<p>Теперь выводим каждый элемент массива по индексу:</p>
70
<p>Теперь выводим каждый элемент массива по индексу:</p>
71
console.log("Имя: " + result[0]); // Имя: Анна console.log("Возраст: " + result[1]); // Возраст: 25 console.log("Город: " + result[2]); // Город: Екатеринбург console.log("e-mail: " + result[3]); // e-mail: example@gmail.com<p>В отличие от строк, элементы массива можно изменять, просто обращаясь к ним по индексу.</p>
71
console.log("Имя: " + result[0]); // Имя: Анна console.log("Возраст: " + result[1]); // Возраст: 25 console.log("Город: " + result[2]); // Город: Екатеринбург console.log("e-mail: " + result[3]); // e-mail: example@gmail.com<p>В отличие от строк, элементы массива можно изменять, просто обращаясь к ним по индексу.</p>
72
<p>Предположим, у нас есть строка:</p>
72
<p>Предположим, у нас есть строка:</p>
73
let input = "item1 item2 item3 item4";<p>Здесь элементы разделены пробелами. Чтобы превратить текст в массив, используем метод split(" ") с пробелом в качестве разделителя:</p>
73
let input = "item1 item2 item3 item4";<p>Здесь элементы разделены пробелами. Чтобы превратить текст в массив, используем метод split(" ") с пробелом в качестве разделителя:</p>
74
let result = input.split(" "); console.log(result); // ["item1", "item2", "item3", "item4"]<p>В результате получаем массив:</p>
74
let result = input.split(" "); console.log(result); // ["item1", "item2", "item3", "item4"]<p>В результате получаем массив:</p>
75
["item1", "item2", "item3", "item4"]<p>Допустим, строка разделена точками с запятой:</p>
75
["item1", "item2", "item3", "item4"]<p>Допустим, строка разделена точками с запятой:</p>
76
-
let input = "part1;part2;part3;part4";<p>Нам нужно получить только первые три элемента. В эт��м случае можно использовать метод split(";", 3):</p>
76
+
let input = "part1;part2;part3;part4";<p>Нам нужно получить только первые три элемента. В этом случае можно использовать метод split(";", 3):</p>
77
let result = input.split(";", 3); console.log(result); // ["part1", "part2", "part3"]<p>Здесь текст разбивается максимум на три части, а остальное отбрасывается.</p>
77
let result = input.split(";", 3); console.log(result); // ["part1", "part2", "part3"]<p>Здесь текст разбивается максимум на три части, а остальное отбрасывается.</p>
78
<p><strong>Пустые строки в массиве.</strong>Если разделитель стоит в начале или в конце текста, split() добавит пустые элементы:</p>
78
<p><strong>Пустые строки в массиве.</strong>Если разделитель стоит в начале или в конце текста, split() добавит пустые элементы:</p>
79
let str = ",a,b,c,"; let result = str.split(","); console.log(result); // ["", "a", "b", "c", ""]<p><strong>Разделение на символы.</strong>Если передать в split() пустую строку ("") в качестве разделителя, то каждая буква станет отдельным элементом массива:</p>
79
let str = ",a,b,c,"; let result = str.split(","); console.log(result); // ["", "a", "b", "c", ""]<p><strong>Разделение на символы.</strong>Если передать в split() пустую строку ("") в качестве разделителя, то каждая буква станет отдельным элементом массива:</p>
80
let str = "JavaScript"; let result = str.split(""); console.log(result); // ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t"]<p><strong>Без аргумента.</strong>Если вызвать split() без параметров, строка не разделяется:</p>
80
let str = "JavaScript"; let result = str.split(""); console.log(result); // ["J", "a", "v", "a", "S", "c", "r", "i", "p", "t"]<p><strong>Без аргумента.</strong>Если вызвать split() без параметров, строка не разделяется:</p>
81
let str = "JavaScript"; let result = str.split(); console.log(result); // ["JavaScript"]<p>Метод join() используется для объединения всех элементов массива в одну строку. Он имеет один необязательный аргумент - разделитель, который вставляется между элементами.</p>
81
let str = "JavaScript"; let result = str.split(); console.log(result); // ["JavaScript"]<p>Метод join() используется для объединения всех элементов массива в одну строку. Он имеет один необязательный аргумент - разделитель, который вставляется между элементами.</p>
82
<p>Синтаксис метода выглядит так:</p>
82
<p>Синтаксис метода выглядит так:</p>
83
array.join(separator)<ul><li>array - массив, элементы которого нужно объединить.</li>
83
array.join(separator)<ul><li>array - массив, элементы которого нужно объединить.</li>
84
<li>separator - строка, вставляемая между элементами. Это может быть символ, слово, фраза, пустая строка или вообще ничего.</li>
84
<li>separator - строка, вставляемая между элементами. Это может быть символ, слово, фраза, пустая строка или вообще ничего.</li>
85
</ul><p>Если не указывать разделитель, по умолчанию используется запятая.</p>
85
</ul><p>Если не указывать разделитель, по умолчанию используется запятая.</p>
86
<p><strong>Разделитель по умолчанию:</strong></p>
86
<p><strong>Разделитель по умолчанию:</strong></p>
87
const names = ['John', 'Elly', 'Peter']; const result = names.join(); console.log(result); // "John,Elly,Peter"<p><strong>Пустой разделитель (элементы сливаются в одну строку):</strong></p>
87
const names = ['John', 'Elly', 'Peter']; const result = names.join(); console.log(result); // "John,Elly,Peter"<p><strong>Пустой разделитель (элементы сливаются в одну строку):</strong></p>
88
const names = ['John', 'Elly', 'Peter']; const result = names.join(''); console.log(result); // "JohnEllyPeter"<p><strong>Произвольный разделитель, например дефис:</strong></p>
88
const names = ['John', 'Elly', 'Peter']; const result = names.join(''); console.log(result); // "JohnEllyPeter"<p><strong>Произвольный разделитель, например дефис:</strong></p>
89
const names = ['John', 'Elly', 'Peter']; const result = names.join('-'); console.log(result); // "John-Elly-Peter"<p><strong>Работа с разными типами данных.</strong>join() автоматически преобразует все элементы массива в строки. Это касается и чисел, логических значений, null, undefined:</p>
89
const names = ['John', 'Elly', 'Peter']; const result = names.join('-'); console.log(result); // "John-Elly-Peter"<p><strong>Работа с разными типами данных.</strong>join() автоматически преобразует все элементы массива в строки. Это касается и чисел, логических значений, null, undefined:</p>
90
const mixArray = [1, 'hello', true, null, undefined]; const result = mixArray.join('-'); console.log(result); // "1-hello-true--"<p>null и undefined становятся пустыми строками.</p>
90
const mixArray = [1, 'hello', true, null, undefined]; const result = mixArray.join('-'); console.log(result); // "1-hello-true--"<p>null и undefined становятся пустыми строками.</p>
91
<p><strong>Пустой массив.</strong>Если применить join() к пустому массиву, результатом будет пустая строка:</p>
91
<p><strong>Пустой массив.</strong>Если применить join() к пустому массиву, результатом будет пустая строка:</p>
92
const empty = []; console.log(empty.join()); // ""<p>Вот несколько типичных сценариев:</p>
92
const empty = []; console.log(empty.join()); // ""<p>Вот несколько типичных сценариев:</p>
93
<p><strong>Создание CSV-строк.</strong>Можно быстро преобразовать массив данных в строку формата CSV. Её можно использовать для экспорта в Excel или загрузки в базу данных.</p>
93
<p><strong>Создание CSV-строк.</strong>Можно быстро преобразовать массив данных в строку формата CSV. Её можно использовать для экспорта в Excel или загрузки в базу данных.</p>
94
let userData = ["Дмитрий", 35, "Санкт-Петербург", "dmitry@mail.com"]; let csvString = userData.join(","); console.log(csvString); // Вывод: "Дмитрий,35,Санкт-Петербург,dmitry@mail.com"<p><strong>Формирование пути к файлу.</strong>Предположим, у нас есть массив, содержащий части пути к файлу. join() помогает собрать из его элементов полный путь.</p>
94
let userData = ["Дмитрий", 35, "Санкт-Петербург", "dmitry@mail.com"]; let csvString = userData.join(","); console.log(csvString); // Вывод: "Дмитрий,35,Санкт-Петербург,dmitry@mail.com"<p><strong>Формирование пути к файлу.</strong>Предположим, у нас есть массив, содержащий части пути к файлу. join() помогает собрать из его элементов полный путь.</p>
95
const pathParts = ["home", "user", "projects", "website", "index.html"]; const fullPath = pathParts.join("/"); console.log("Полный путь к файлу:", fullPath); // Полный путь к файлу: home/user/projects/website/index.html<p><strong>Сборка URL-адресов.</strong>Можно создать URL, объединив его части (например, домен, путь, параметры) из массива.</p>
95
const pathParts = ["home", "user", "projects", "website", "index.html"]; const fullPath = pathParts.join("/"); console.log("Полный путь к файлу:", fullPath); // Полный путь к файлу: home/user/projects/website/index.html<p><strong>Сборка URL-адресов.</strong>Можно создать URL, объединив его части (например, домен, путь, параметры) из массива.</p>
96
const urlParts = ["https://example.com", "api", "users", "123", "profile"]; const fullUrl = urlParts.join("/"); console.log("Полный URL:", fullUrl); // Полный URL: https://example.com/api/users/123/profile<p>При копировании текста с веб‑страниц или чтении данных из файлов часто появляются лишние пробелы в начале и конце текста. Такие пробелы могут мешать при сравнении строк, записи в базу данных или выводе на экран.</p>
96
const urlParts = ["https://example.com", "api", "users", "123", "profile"]; const fullUrl = urlParts.join("/"); console.log("Полный URL:", fullUrl); // Полный URL: https://example.com/api/users/123/profile<p>При копировании текста с веб‑страниц или чтении данных из файлов часто появляются лишние пробелы в начале и конце текста. Такие пробелы могут мешать при сравнении строк, записи в базу данных или выводе на экран.</p>
97
<p>Метод trim() удаляет все пробельные символы в начале и конце, включая пробелы, табуляции (\t) и переносы (\n):</p>
97
<p>Метод trim() удаляет все пробельные символы в начале и конце, включая пробелы, табуляции (\t) и переносы (\n):</p>
98
let str = " Строка с пробелами \n"; let cleanStr = str.trim(); console.log("До обработки: [" + str + "]"); console.log("После обработки: [" + cleanStr + "]");<p>Результат:</p>
98
let str = " Строка с пробелами \n"; let cleanStr = str.trim(); console.log("До обработки: [" + str + "]"); console.log("После обработки: [" + cleanStr + "]");<p>Результат:</p>
99
До обработки: [ Строка с пробелами ] После обработки: [Строка с пробелами]<p>Этот метод особенно полезен, когда нужно почистить данные перед обработкой.</p>
99
До обработки: [ Строка с пробелами ] После обработки: [Строка с пробелами]<p>Этот метод особенно полезен, когда нужно почистить данные перед обработкой.</p>
100
<p>В JavaScript заглавные и строчные буквы - это разные символы. Поэтому при поиске, сравнении или приведении данных к единому виду часто нужно преобразовать текст в один регистр.</p>
100
<p>В JavaScript заглавные и строчные буквы - это разные символы. Поэтому при поиске, сравнении или приведении данных к единому виду часто нужно преобразовать текст в один регистр.</p>
101
<p>Для этого используют два метода:</p>
101
<p>Для этого используют два метода:</p>
102
<ul><li>toUpperCase() - переводит все буквы в верхний регистр (заглавные или большие).</li>
102
<ul><li>toUpperCase() - переводит все буквы в верхний регистр (заглавные или большие).</li>
103
<li>toLowerCase() - переводит все буквы в нижний регистр (строчные или маленькие).</li>
103
<li>toLowerCase() - переводит все буквы в нижний регистр (строчные или маленькие).</li>
104
</ul><p>Эти методы особенно полезны при поиске слов, сравнении строк, валидации пользовательских данных и стандартизации ввода.</p>
104
</ul><p>Эти методы особенно полезны при поиске слов, сравнении строк, валидации пользовательских данных и стандартизации ввода.</p>
105
<p>Приведём буквы в имени пользователя к одному формату:</p>
105
<p>Приведём буквы в имени пользователя к одному формату:</p>
106
let username = "ваНя"; let stUsername = username.toUpperCase(); console.log("Имя пользователя:", stUsername); // Имя пользователя: ВАНЯ<p>Сравним email-адреса без учёта регистра:</p>
106
let username = "ваНя"; let stUsername = username.toUpperCase(); console.log("Имя пользователя:", stUsername); // Имя пользователя: ВАНЯ<p>Сравним email-адреса без учёта регистра:</p>
107
// Создаём две строки с электронными адресами // Они различаются только регистром букв (в первом адресе есть заглавные) let email1 = "Example@Mail.Com"; let email2 = "example@mail.com"; // Приводим оба адреса к нижнему регистру с помощью toLowerCase() // Теперь оба адреса выглядят одинаково: "example@mail.com" if (email1.toLowerCase() === email2.toLowerCase()) { // Если строки равны после приведения к нижнему регистру, // выводим сообщение о совпадении адресов console.log("Электронные адреса совпадают!"); } else { // Если строки не равны, выводим сообщение о различии console.log("Адреса разные!"); } // Вывод в консоль: // Электронные адреса совпадают!<p>Метод includes() в JavaScript проверяет, содержится ли одна строка внутри другой. Он возвращает true, если подстрока найдена, и false, если нет.</p>
107
// Создаём две строки с электронными адресами // Они различаются только регистром букв (в первом адресе есть заглавные) let email1 = "Example@Mail.Com"; let email2 = "example@mail.com"; // Приводим оба адреса к нижнему регистру с помощью toLowerCase() // Теперь оба адреса выглядят одинаково: "example@mail.com" if (email1.toLowerCase() === email2.toLowerCase()) { // Если строки равны после приведения к нижнему регистру, // выводим сообщение о совпадении адресов console.log("Электронные адреса совпадают!"); } else { // Если строки не равны, выводим сообщение о различии console.log("Адреса разные!"); } // Вывод в консоль: // Электронные адреса совпадают!<p>Метод includes() в JavaScript проверяет, содержится ли одна строка внутри другой. Он возвращает true, если подстрока найдена, и false, если нет.</p>
108
<p>Допустим, у нас есть список пользователей, и мы хотим узнать, есть ли в списке имя "Алексей":</p>
108
<p>Допустим, у нас есть список пользователей, и мы хотим узнать, есть ли в списке имя "Алексей":</p>
109
// Создаём строку с перечнем имён пользователей, разделённых запятыми let users = "Алексей, Мария, Дмитрий, Екатерина"; // Создаём переменную с именем пользователя, которого нужно найти let name = "Алексей"; // Проверяем, содержит ли строка users подстроку name // Метод includes() возвращает true, если подстрока найдена, и false - если нет if (users.includes(name)) { // Если имя найдено в строке, выводим сообщение о том, что пользователь найден console.log("Пользователь найден!"); } else { // Если имя не найдено, выводим сообщение о том, что пользователь не найден console.log("Пользователь не найден!"); } // Вывод в консоль: // Пользователь найден!<p><strong>Метод чувствителен к регистру.</strong>Если отличаются буквы - заглавные или строчные - метод вернёт false:</p>
109
// Создаём строку с перечнем имён пользователей, разделённых запятыми let users = "Алексей, Мария, Дмитрий, Екатерина"; // Создаём переменную с именем пользователя, которого нужно найти let name = "Алексей"; // Проверяем, содержит ли строка users подстроку name // Метод includes() возвращает true, если подстрока найдена, и false - если нет if (users.includes(name)) { // Если имя найдено в строке, выводим сообщение о том, что пользователь найден console.log("Пользователь найден!"); } else { // Если имя не найдено, выводим сообщение о том, что пользователь не найден console.log("Пользователь не найден!"); } // Вывод в консоль: // Пользователь найден!<p><strong>Метод чувствителен к регистру.</strong>Если отличаются буквы - заглавные или строчные - метод вернёт false:</p>
110
console.log("Алексей".includes("алексей")); // false<p>Чтобы избежать ошибок, лучше приводить текст к одному регистру с помощью методов toUpperCase() или toLowerCase():</p>
110
console.log("Алексей".includes("алексей")); // false<p>Чтобы избежать ошибок, лучше приводить текст к одному регистру с помощью методов toUpperCase() или toLowerCase():</p>
111
users.toLowerCase().includes(name.toLowerCase());<p><strong>Совпадение может быть неполным.</strong>Метод вернёт true, даже если подстрока входит в состав другого слова:</p>
111
users.toLowerCase().includes(name.toLowerCase());<p><strong>Совпадение может быть неполным.</strong>Метод вернёт true, даже если подстрока входит в состав другого слова:</p>
112
console.log("Привет, Алексей".includes("Алекс")); // true<p>Если нужно искать точные совпадения (например, только имя целиком), лучше сначала разбить строку на части с помощью split() и сравнивать элементы массива.</p>
112
console.log("Привет, Алексей".includes("Алекс")); // true<p>Если нужно искать точные совпадения (например, только имя целиком), лучше сначала разбить строку на части с помощью split() и сравнивать элементы массива.</p>
113
<p><strong>Метод работает не везде.</strong>Метод includes() не работает в старых браузерах, например в Internet Explorer. Если важно поддерживать такие браузеры, можно использовать метод indexOf() как альтернативу. О нём мы поговорим в следующем разделе.</p>
113
<p><strong>Метод работает не везде.</strong>Метод includes() не работает в старых браузерах, например в Internet Explorer. Если важно поддерживать такие браузеры, можно использовать метод indexOf() как альтернативу. О нём мы поговорим в следующем разделе.</p>
114
<p>Метод indexOf() позволяет найти позицию подстроки внутри строки. Он возвращает индекс первого символа, с которого начинается подстрока, или -1, если подстрока не найдена.</p>
114
<p>Метод indexOf() позволяет найти позицию подстроки внутри строки. Он возвращает индекс первого символа, с которого начинается подстрока, или -1, если подстрока не найдена.</p>
115
<p>Допустим, у нас есть сообщение от пользователя. Мы хотим узнать, содержится ли в нём слово "ошибка" и если да, то на какой позиции:</p>
115
<p>Допустим, у нас есть сообщение от пользователя. Мы хотим узнать, содержится ли в нём слово "ошибка" и если да, то на какой позиции:</p>
116
// Создаём строку с сообщением об ошибке let message = "Загрузка данных. Ошибка 404: файл не найден."; // Определяем слово, которое нужно найти в строке let word = "ошибка"; // Приводим строку message к нижнему регистру, чтобы поиск был нечувствителен к регистру // Затем вызываем метод indexOf(), чтобы найти позицию первого вхождения слова "ошибка" let position = message.toLowerCase().indexOf(word); // Проверяем результат работы indexOf() // Если слово найдено, indexOf() вернёт индекс (число >= 0) if (position !== -1) { // Выводим сообщение с позицией найденного слова console.log(`Слово "${word}" найдено на позиции ${position}.`); } else { // Если слово не найдено (indexOf() вернул -1), выводим соответствующее сообщение console.log(`Слово "${word}" не найдено.`); } // Результат: // Слово "ошибка" найдено на позиции 17.<p><strong>Метод чувствителен к регистру.</strong>Как и includes(), indexOf() считает, что заглавные и строчные буквы - это разные символы, так что здесь тоже надо привести текст к одному регистру.</p>
116
// Создаём строку с сообщением об ошибке let message = "Загрузка данных. Ошибка 404: файл не найден."; // Определяем слово, которое нужно найти в строке let word = "ошибка"; // Приводим строку message к нижнему регистру, чтобы поиск был нечувствителен к регистру // Затем вызываем метод indexOf(), чтобы найти позицию первого вхождения слова "ошибка" let position = message.toLowerCase().indexOf(word); // Проверяем результат работы indexOf() // Если слово найдено, indexOf() вернёт индекс (число >= 0) if (position !== -1) { // Выводим сообщение с позицией найденного слова console.log(`Слово "${word}" найдено на позиции ${position}.`); } else { // Если слово не найдено (indexOf() вернул -1), выводим соответствующее сообщение console.log(`Слово "${word}" не найдено.`); } // Результат: // Слово "ошибка" найдено на позиции 17.<p><strong>Метод чувствителен к регистру.</strong>Как и includes(), indexOf() считает, что заглавные и строчные буквы - это разные символы, так что здесь тоже надо привести текст к одному регистру.</p>
117
<p><strong>Учитывается только первое совпадение.</strong>Если подстрока встречается несколько раз, indexOf() вернёт позицию только первого вхождения, а дальше искать не будет.</p>
117
<p><strong>Учитывается только первое совпадение.</strong>Если подстрока встречается несколько раз, indexOf() вернёт позицию только первого вхождения, а дальше искать не будет.</p>
118
<p>Допустим, у вас есть шаблон письма:</p>
118
<p>Допустим, у вас есть шаблон письма:</p>
119
<p>"Здравствуйте, {username}! Добро пожаловать на наш сайт."</p>
119
<p>"Здравствуйте, {username}! Добро пожаловать на наш сайт."</p>
120
<p>Имя пользователя будет подставляться позже, когда он введёт свои данные.</p>
120
<p>Имя пользователя будет подставляться позже, когда он введёт свои данные.</p>
121
<p>Чтобы заменить заглушку {username} на конкретное имя, используется метод replace() - он заменяет первое вхождение одной подстроки на другую.</p>
121
<p>Чтобы заменить заглушку {username} на конкретное имя, используется метод replace() - он заменяет первое вхождение одной подстроки на другую.</p>
122
<p>Синтаксис replace():</p>
122
<p>Синтаксис replace():</p>
123
str.replace(substr, newSubstr);<p>Где</p>
123
str.replace(substr, newSubstr);<p>Где</p>
124
<ul><li>str - исходная строка;</li>
124
<ul><li>str - исходная строка;</li>
125
<li>substr - часть, которую нужно заменить;</li>
125
<li>substr - часть, которую нужно заменить;</li>
126
<li>newSubstr - подстрока, на которую меняется исходная.</li>
126
<li>newSubstr - подстрока, на которую меняется исходная.</li>
127
</ul><p>Заменим имя в шаблоне письма:</p>
127
</ul><p>Заменим имя в шаблоне письма:</p>
128
let template = "Здравствуйте, USER_NAME! Добро пожаловать на наш сайт."; let userName = "Алексей"; let message = template.replace("USER_NAME", userName); console.log(message); // Здравствуйте, Алексей! Добро пожаловать на наш сайт.<p>Метод replace() нашёл в шаблоне подстроку {USER_NAME} и заменил её на значение переменной userName.</p>
128
let template = "Здравствуйте, USER_NAME! Добро пожаловать на наш сайт."; let userName = "Алексей"; let message = template.replace("USER_NAME", userName); console.log(message); // Здравствуйте, Алексей! Добро пожаловать на наш сайт.<p>Метод replace() нашёл в шаблоне подстроку {USER_NAME} и заменил её на значение переменной userName.</p>
129
<p>Метод replace() заменяет только первое совпадение. Чтобы заменить все, используйте метод replaceAll():</p>
129
<p>Метод replace() заменяет только первое совпадение. Чтобы заменить все, используйте метод replaceAll():</p>
130
let message = "Дорогой USER_NAME, поздравляем с праздником! Желаем успехов, USER_NAME!"; let updated = message.replaceAll("USER_NAME", "Дмитрий"); console.log(updated); // Дорогой Дмитрий, поздравляем с праздником! Желаем успехов, Дмитрий!<p>Метод replaceAll() не поддерживается в старых браузерах вроде Internet Explorer.</p>
130
let message = "Дорогой USER_NAME, поздравляем с праздником! Желаем успехов, USER_NAME!"; let updated = message.replaceAll("USER_NAME", "Дмитрий"); console.log(updated); // Дорогой Дмитрий, поздравляем с праздником! Желаем успехов, Дмитрий!<p>Метод replaceAll() не поддерживается в старых браузерах вроде Internet Explorer.</p>
131
<p>Разберём несколько задач, связанных с работой со строками и массивами в JavaScript.</p>
131
<p>Разберём несколько задач, связанных с работой со строками и массивами в JavaScript.</p>
132
<p>Дан текст:</p>
132
<p>Дан текст:</p>
133
<p>"This lesson is boring"</p>
133
<p>"This lesson is boring"</p>
134
<p>Замените слово "boring" на "interesting".</p>
134
<p>Замените слово "boring" на "interesting".</p>
135
<p><strong>Решение:</strong></p>
135
<p><strong>Решение:</strong></p>
136
const text = "This lesson is boring"; const newText = text.replace("boring", "interesting"); console.log(newText); // "This lesson is interesting"<p><strong>Объяснение:</strong></p>
136
const text = "This lesson is boring"; const newText = text.replace("boring", "interesting"); console.log(newText); // "This lesson is interesting"<p><strong>Объяснение:</strong></p>
137
<p>Метод replace("boring", "interesting") заменяет<strong>первое вхождение</strong>слова "boring" на "interesting".</p>
137
<p>Метод replace("boring", "interesting") заменяет<strong>первое вхождение</strong>слова "boring" на "interesting".</p>
138
<p>Дан текст:</p>
138
<p>Дан текст:</p>
139
<p>"JavaScript is a scripting or programming language"</p>
139
<p>"JavaScript is a scripting or programming language"</p>
140
<p>Разбейте его на массив из отдельных слов.</p>
140
<p>Разбейте его на массив из отдельных слов.</p>
141
<p><strong>Решение:</strong></p>
141
<p><strong>Решение:</strong></p>
142
const phrase = "JavaScript is a scripting or programming language"; const words = phrase.split(" "); console.log(words); // ['JavaScript', 'is', 'a', 'scripting', 'or', 'programming', 'language']<p><strong>Объяснение:</strong></p>
142
const phrase = "JavaScript is a scripting or programming language"; const words = phrase.split(" "); console.log(words); // ['JavaScript', 'is', 'a', 'scripting', 'or', 'programming', 'language']<p><strong>Объяснение:</strong></p>
143
<p>Метод split(" ") разбивает строку на массив, используя пробел как разделитель.</p>
143
<p>Метод split(" ") разбивает строку на массив, используя пробел как разделитель.</p>
144
<p>Дан массив:</p>
144
<p>Дан массив:</p>
145
<p>['JavaScript', 'is', 'a', 'scripting', 'or', 'programming', 'language']</p>
145
<p>['JavaScript', 'is', 'a', 'scripting', 'or', 'programming', 'language']</p>
146
<p>Нужно собрать его в одну строку, разделяя слова пробелами.</p>
146
<p>Нужно собрать его в одну строку, разделяя слова пробелами.</p>
147
<p><strong>Решение:</strong></p>
147
<p><strong>Решение:</strong></p>
148
const words = ['JavaScript', 'is', 'a', 'scripting', 'or', 'programming', 'language']; const phrase = words.join(" "); console.log(phrase); // "JavaScript is a scripting or programming language"<p><strong>Объяснение:</strong></p>
148
const words = ['JavaScript', 'is', 'a', 'scripting', 'or', 'programming', 'language']; const phrase = words.join(" "); console.log(phrase); // "JavaScript is a scripting or programming language"<p><strong>Объяснение:</strong></p>
149
<p>Метод join(" ") объединяет элементы массива в строку, вставляя пробелы между ними.</p>
149
<p>Метод join(" ") объединяет элементы массива в строку, вставляя пробелы между ними.</p>
150
<ul><li><a>MDN: объект String</a></li>
150
<ul><li><a>MDN: объект String</a></li>
151
</ul><a>Научитесь: Профессия Фронтенд-разработчик + ИИ Узнать больше</a>
151
</ul><a>Научитесь: Профессия Фронтенд-разработчик + ИИ Узнать больше</a>