Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс JavaScript
/

Извлечение символов из строки

JavaScript: Извлечение символов из строки

Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя и нужно вывести их в сокращённом формате вида A. Ivanov. Для этого потребуется взять первую букву имени.

В JavaScript для доступа к символам строки используют индексацию. Индексация означает, что у каждого символа в строке есть свой номер, то есть индекс. Индексация начинается с нуля: у первого символа индекс 0, у второго 1 и так далее. Представим, что у нас есть строка:

const firstName = 'Alexander';

Чтобы получить первую букву, указываем её позицию (индекс) в квадратных скобках:

console.log(firstName[0]); // => A

Индексы в JavaScript (и во многих языках) начинаются с нуля:

Символ  A  l  e  x  a  n  d  e  r
Индекс  0  1  2  3  4  5  6  7  8

Длина строки Alexander равна 9, поэтому индекс последнего символа равен 8, то есть 9 - 1. Длину строки можно узнать с помощью функции length():

import { length } from 'hexlet-basics/string';

console.log(length(firstName));               // => 9
console.log(firstName[length(firstName) - 1]); // => r

Строка import в начале файла подключает учебную функцию length() из библиотеки — её нужно просто скопировать как есть. Как устроены импорты, разберём в уроках про модули.

Если изменится длина строки, то последний символ тоже сдвинется, и придётся снова вычислять его индекс.

Выход за границы строки

В отличие от некоторых языков, в JavaScript обращение к несуществующему индексу не вызывает ошибку — возвращается специальное значение undefined. Это «ничего нет» в мире JavaScript; подробно разберём его в модуле про типы данных.

console.log(firstName[9]); // => undefined

Поэтому в программировании принято проверять длину строки и обращаться к её символам, только если это безопасно. Мы дойдём до этого в будущих уроках.

Извлечение символов с конца

В некоторых языках (например, в Python) для доступа к символам с конца используют отрицательные индексы. В JavaScript квадратные скобки отрицательные индексы не понимают — firstName[-1] вернёт undefined. Поэтому индекс символа с конца вычисляют через длину строки:

import { length } from 'hexlet-basics/string';

const word = 'Hexlet';

console.log(word[length(word) - 1]); // => t, последний символ
console.log(word[length(word) - 2]); // => e, предпоследний символ
Строка:  'H' 'e' 'x' 'l' 'e' 't'
Индекс:   0   1   2   3   4   5

Здесь length(word) равно 6, поэтому последний символ имеет индекс length(word) - 1, то есть 5. Такой подход работает правильно даже если строка меняет длину.

Индекс можно хранить в переменной:

const index = 0;
console.log(word[index]); // => H

Такой подход полезен, когда индекс вычисляется где-то в коде, а потом используется для доступа к нужному символу.

Спецсимволы

При индексации учитываются обычные буквы, знаки и спецсимволы. Все они занимают позицию в строке и имеют свой индекс, даже если их «не видно» на экране.

Например, в строке '\nyou' первый символ представляет собой \n (перенос строки), а под индексом 1 уже идёт буква y. Поэтому обращение magic[1] вернёт именно y.

Подумайте: что выведет этот код?

const magic = '\nyou';
console.log(magic[1]); // => ?

Вывод будет:

y

Задание

В строке text спрятано секретное слово. Извлеките нужные символы из переменной text по индексам, соедините их и выведите на экран слово grip.

Коммерческий опыт и Трудоустройство

Полезное

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

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

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

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс JavaScript
/

Извлечение символов из строки

JavaScript: Извлечение символов из строки

Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя и нужно вывести их в сокращённом формате вида A. Ivanov. Для этого потребуется взять первую букву имени.

В JavaScript для доступа к символам строки используют индексацию. Индексация означает, что у каждого символа в строке есть свой номер, то есть индекс. Индексация начинается с нуля: у первого символа индекс 0, у второго 1 и так далее. Представим, что у нас есть строка:

const firstName = 'Alexander';

Чтобы получить первую букву, указываем её позицию (индекс) в квадратных скобках:

console.log(firstName[0]); // => A

Индексы в JavaScript (и во многих языках) начинаются с нуля:

Символ  A  l  e  x  a  n  d  e  r
Индекс  0  1  2  3  4  5  6  7  8

Длина строки Alexander равна 9, поэтому индекс последнего символа равен 8, то есть 9 - 1. Длину строки можно узнать с помощью функции length():

import { length } from 'hexlet-basics/string';

console.log(length(firstName));               // => 9
console.log(firstName[length(firstName) - 1]); // => r

Строка import в начале файла подключает учебную функцию length() из библиотеки — её нужно просто скопировать как есть. Как устроены импорты, разберём в уроках про модули.

Если изменится длина строки, то последний символ тоже сдвинется, и придётся снова вычислять его индекс.

Выход за границы строки

В отличие от некоторых языков, в JavaScript обращение к несуществующему индексу не вызывает ошибку — возвращается специальное значение undefined. Это «ничего нет» в мире JavaScript; подробно разберём его в модуле про типы данных.

console.log(firstName[9]); // => undefined

Поэтому в программировании принято проверять длину строки и обращаться к её символам, только если это безопасно. Мы дойдём до этого в будущих уроках.

Извлечение символов с конца

В некоторых языках (например, в Python) для доступа к символам с конца используют отрицательные индексы. В JavaScript квадратные скобки отрицательные индексы не понимают — firstName[-1] вернёт undefined. Поэтому индекс символа с конца вычисляют через длину строки:

import { length } from 'hexlet-basics/string';

const word = 'Hexlet';

console.log(word[length(word) - 1]); // => t, последний символ
console.log(word[length(word) - 2]); // => e, предпоследний символ
Строка:  'H' 'e' 'x' 'l' 'e' 't'
Индекс:   0   1   2   3   4   5

Здесь length(word) равно 6, поэтому последний символ имеет индекс length(word) - 1, то есть 5. Такой подход работает правильно даже если строка меняет длину.

Индекс можно хранить в переменной:

const index = 0;
console.log(word[index]); // => H

Такой подход полезен, когда индекс вычисляется где-то в коде, а потом используется для доступа к нужному символу.

Спецсимволы

При индексации учитываются обычные буквы, знаки и спецсимволы. Все они занимают позицию в строке и имеют свой индекс, даже если их «не видно» на экране.

Например, в строке '\nyou' первый символ представляет собой \n (перенос строки), а под индексом 1 уже идёт буква y. Поэтому обращение magic[1] вернёт именно y.

Подумайте: что выведет этот код?

const magic = '\nyou';
console.log(magic[1]); // => ?

Вывод будет:

y

Задание

В строке text спрятано секретное слово. Извлеките нужные символы из переменной text по индексам, соедините их и выведите на экран слово grip.

Коммерческий опыт и Трудоустройство

Полезное

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

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

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

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

// @ts-check

import { expect, test, vi } from 'vitest';

test('hello world', async () => {
  const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
  await import('./index.js');

  const firstArg = consoleLogSpy.mock.calls.join('\n');

  expect(firstArg).toBe('grip');
});
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →