В JavaScript строки имеют богатый набор встроенных методов для поиска, извлечения, преобразования и сравнения текста.
Наиболее популярные: length, charAt, charCodeAt, at, concat, includes, indexOf, lastIndexOf, startsWith, endsWith,
slice, substring, substr, toLowerCase, toUpperCase, trim, trimStart, trimEnd, replace, replaceAll, split, repeat.
Строки в JavaScript неизменяемы — это значит, что методы не меняют исходную строку, а возвращают новую.
lengthВозвращает количество символов в строке.
"Hello".length // 5Частая ошибка — ожидание, что length вернёт количество байтов.
Для Unicode-символов (emoji, иероглифы) количество символов и байтов может различаться.
charAt(index)Возвращает символ по указанному индексу.
"JavaScript".charAt(4) // "S"Если индекс вне диапазона, вернётся пустая строка.
charCodeAt(index)Возвращает числовой код символа в формате UTF-16.
"A".charCodeAt(0) // 65at(index)Новый метод, который поддерживает отрицательные индексы.
"Hello".at(-1) // "o"concat(str)Объединяет строки.
"Hello".concat(" ", "world") // "Hello world"На практике чаще используют оператор + или шаблонные строки.
includes(substr)Проверяет, содержится ли подстрока.
"JavaScript".includes("Script") // trueРегистрозависим.
indexOf(substr) / lastIndexOf(substr)indexOf возвращает первую позицию подстроки, lastIndexOf — последнюю.
"banana".indexOf("a") // 1
"banana".lastIndexOf("a") // 5startsWith(substr) / endsWith(substr)Проверка начала и конца строки.
"Hello".startsWith("He") // true
"Hello".endsWith("lo") // trueslice(start, end)Извлекает подстроку по индексам (поддерживает отрицательные индексы).
"Hello".slice(1, 4) // "ell"substring(start, end)Аналог slice, но не поддерживает отрицательные индексы и меняет местами аргументы, если start > end.
"Hello".substring(4, 1) // "ell"substr(start, length)Извлекает подстроку по начальной позиции и длине.
"Hello".substr(1, 3) // "ell"Метод устарел, лучше использовать slice.
toLowerCase() / toUpperCase()Меняют регистр всех символов.
"JavaScript".toUpperCase() // "JAVASCRIPT"trim(), trimStart(), trimEnd()Удаляют пробелы по краям строки.
" hi ".trim() // "hi"replace(search, value) / replaceAll(search, value)replace заменяет первое совпадение, replaceAll — все.
"1-2-3".replace("-", "_") // "1_2-3"
"1-2-3".replaceAll("-", "_") // "1_2_3"split(delimiter)Разделяет строку в массив.
"apple,banana".split(",") // ["apple", "banana"]repeat(count)Повторяет строку указанное количество раз.
"ha".repeat(3) // "hahaha"includes, indexOf).substr.length и charAt могут вести себя неожиданно с эмодзи.💡 Совет: при поиске без учёта регистра приводите обе строки к одному регистру:
"Hello".toLowerCase().includes("he") // true