> For the complete documentation index, see [llms.txt](https://aleksandra-hrevtsova.gitbook.io/senior-front-end-javascript/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aleksandra-hrevtsova.gitbook.io/senior-front-end-javascript/bazovyi-sintaksis/string.-svoistva-i-metody.md).

# String. Свойства и методы

Строка - это примитивный тип данных.

Строчный тип данных считается самым "легким" типов, занимающим меньшее количество памяти в сравнении с его "коллегами" по примитивам и тем более с объектами.

Давайте заключим важные понятия о строке:

* строка всегда заключена в кавычки;
* строка всегда имеет длину - `length` - количество символов между кавычками, учитывая пробелы. \
  Отсчет начинается с 1;
* значение строки имеет строкую индексацию. \
  Индексация начинается с 0 (как у элементов массивов). \
  Буквы, цифры, символы, знаки препинания и пробелы - все имеют свой порядковый символ с строчном значении;
* регистр имеет значение;

![Позиции и индексы символов в строке](https://2836573515-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9Rcoi1TYAuMIrGFyZ1PS%2Fuploads%2FikfUTGmIvXLNyCStEk4K%2Fstring-idx.png?alt=media\&token=f7cdd065-28ac-4a6a-9560-63cdfe1fb53f)

Итак, что может быть строкой?

Все, что заключено в кавычки.

Что значит индексация, давай разберем на примерах.

```
const message = 'I Love JavaScript';
console.log(message.length); // 17
```

&#x20;Методы строки

<table><thead><tr><th width="282">Метод</th><th width="439.1954887218045">Описание</th><th>Применим к массивам</th></tr></thead><tbody><tr><td><code>str.trim()</code></td><td>убирает пробелы с начала и с конца строки</td><td><code>false</code></td></tr><tr><td><code>str.toLowerCase()</code></td><td>приводит все символы строки к нижнему регистру</td><td><code>false</code></td></tr><tr><td><code>str.toUpperCase()</code></td><td>приводит все символы строки к верхнему регистру</td><td><code>false</code></td></tr><tr><td><code>str.startsWith(value)</code></td><td>возвращает булевое <code>true</code>, если строка <code>str</code> начинается на <code>value</code>, иначе <code>false</code></td><td><code>false</code></td></tr><tr><td><code>str.endsWith(value)</code></td><td>возвращает булевое <code>true</code>, если строка <code>str</code> заканчивается на <code>value</code>, иначе <code>false</code></td><td><code>false</code></td></tr><tr><td><code>str.indexOf(value)</code></td><td>возвращает индекс первого символа <code>value</code> в строке <code>str</code>, если <code>value</code> полностью есть в строке <code>str</code> с учетом регистра, иначе вернет <code>-1</code></td><td><code>true</code></td></tr><tr><td><code>str.includes(value)</code></td><td>возвращает булевое <code>true</code>, если <code>value</code> полностью есть в строке <code>str</code>, иначе <code>false</code></td><td><code>true</code></td></tr><tr><td><code>str.slice(</code>startIdx, endIdx<code>)</code></td><td>создает копию части или всей строки от <code>startIdx</code> и до, но не включая <code>endIdx</code> и возвращает новую строку, не изменяя исходную.</td><td><code>true</code></td></tr></tbody></table>
