Какие методы у строк знаешь?

👨‍💻 Frontend Developer 🟡 Часто попадается 🎚️ Средний
#JavaScript #Строки #База JS

Краткий ответ

В JavaScript строки имеют богатый набор встроенных методов для поиска, извлечения, преобразования и сравнения текста. Наиболее популярные: length, charAt, charCodeAt, at, concat, includes, indexOf, lastIndexOf, startsWith, endsWith, slice, substring, substr, toLowerCase, toUpperCase, trim, trimStart, trimEnd, replace, replaceAll, split, repeat.

Подробно

Строки в JavaScript неизменяемы — это значит, что методы не меняют исходную строку, а возвращают новую.


1. Свойство length

Возвращает количество символов в строке.

"Hello".length // 5

Частая ошибка — ожидание, что length вернёт количество байтов. Для Unicode-символов (emoji, иероглифы) количество символов и байтов может различаться.


2. charAt(index)

Возвращает символ по указанному индексу.

"JavaScript".charAt(4) // "S"

Если индекс вне диапазона, вернётся пустая строка.


3. charCodeAt(index)

Возвращает числовой код символа в формате UTF-16.

"A".charCodeAt(0) // 65

4. at(index)

Новый метод, который поддерживает отрицательные индексы.

"Hello".at(-1) // "o"

5. concat(str)

Объединяет строки.

"Hello".concat(" ", "world") // "Hello world"

На практике чаще используют оператор + или шаблонные строки.


6. includes(substr)

Проверяет, содержится ли подстрока.

"JavaScript".includes("Script") // true

Регистрозависим.


7. indexOf(substr) / lastIndexOf(substr)

indexOf возвращает первую позицию подстроки, lastIndexOf — последнюю.

"banana".indexOf("a") // 1
"banana".lastIndexOf("a") // 5

8. startsWith(substr) / endsWith(substr)

Проверка начала и конца строки.

"Hello".startsWith("He") // true
"Hello".endsWith("lo")   // true

9. slice(start, end)

Извлекает подстроку по индексам (поддерживает отрицательные индексы).

"Hello".slice(1, 4) // "ell"

10. substring(start, end)

Аналог slice, но не поддерживает отрицательные индексы и меняет местами аргументы, если start > end.

"Hello".substring(4, 1) // "ell"

11. substr(start, length)

Извлекает подстроку по начальной позиции и длине.

"Hello".substr(1, 3) // "ell"

Метод устарел, лучше использовать slice.


12. toLowerCase() / toUpperCase()

Меняют регистр всех символов.

"JavaScript".toUpperCase() // "JAVASCRIPT"

13. trim(), trimStart(), trimEnd()

Удаляют пробелы по краям строки.

"  hi  ".trim() // "hi"

14. replace(search, value) / replaceAll(search, value)

replace заменяет первое совпадение, replaceAll — все.

"1-2-3".replace("-", "_")      // "1_2-3"
"1-2-3".replaceAll("-", "_")   // "1_2_3"

15. split(delimiter)

Разделяет строку в массив.

"apple,banana".split(",") // ["apple", "banana"]

16. repeat(count)

Повторяет строку указанное количество раз.

"ha".repeat(3) // "hahaha"

Частые ошибки

  1. Ожидание, что методы меняют строку — они всегда возвращают новую.
  2. Регистрозависимость методов поиска (includes, indexOf).
  3. Использование устаревшего substr.
  4. Неверная работа с Unicode — length и charAt могут вести себя неожиданно с эмодзи.

💡 Совет: при поиске без учёта регистра приводите обе строки к одному регистру:

"Hello".toLowerCase().includes("he") // true