Задачи на строковые функции в JavaScript
Практика
Примеры решения задач
Задача. Поиск и замена
Дана строка 'aaa@bbb@ccc'. Заменить все @ на ! с помощью глобального поиска и замены.
Решение: в данном случае необходимо воспользоваться методом replace, который выполняет поиск и замену. Но при простом варианте использования этот метод найдет и заменит только 1-е совпадение:
s='aaa@bbb@ccc';document.write(s.replace('@','!'))
Чтобы заменить все совпадения, воспользуемся глобальным поиском с помощью регулярного выражения:
s='aaa@bbb@ccc';document.write(s.replace(/@/g,'!'))
Задача. Методы substr, substring, slice
Дана строка 'aaabbbccc'. Вырезать из нее слово 'bbb' 3-мя разными способами (через substr, substring, slice).
Решение: слово 'bbb' начинается с символа номер 3 (нумерация с 0), а заканчивается символом номер 5 (до символа номер 6):
s='aaabbbccc';
document.write(s.substr(3,3));//substr(откуда отрезать, сколько отрезать)
document.write(s.substring(3,6));//substring(откуда отрезать, докуда отрезать)
document.write(s.slice(3,6))//slice(откуда отрезать, докуда отрезать)
Упрощаем код:
s='aaabbbccc';document.write(s.substr(3,3)+', '+s.substring(3,6)+', '+s.slice(3,6))
Обратите внимание на то, что в методах substring и slice 2-й параметр должен быть на 1 больше того символа, который мы хотим забрать (т.е., если указать число 6, то отрезание произойдет до 5 символа включительно).
Задача. Преобразование формата даты
В переменной d лежит дата в формате '2088-8-18'. Преобразовать эту дату в формат '18.8.2088'.
Решение: с помощью метода split строку '2088-8-18' разбивается в массив по разделителю '-', при этом в 0-м элементе окажется год, в 1-м - месяц, во 2-м - день:
d='2088-8-18';a=d.split('-');document.write(a);//получится массив ['2088','8','18']
Теперь, обращаясь к разным элементам массива по их ключам, сформируем нужную строку:
d='2088-8-18';a=d.split('-');b=a[2]+'/'+a[1]+'/'+a[0];document.write(b)//получится строка '18.8.2088'
Сократим код:
d='2088-8-18',a=d.split('-'),b=a[2]+'.'+a[1]+'.'+a[0];document.write(b)
Задачи для решения
Работа с регистром символов
Для решения задач данного блока понадобится метод toUpperCase, toLowerCase.
Дана строка 'js'. Сделать из нее строку 'JS'.
Дана строка 'JS'. Сделать из нее строку 'js'.
Работа с length, substr, substring, slice, indexOf
Для решения задач данного блока понадобятся методы length, substr, substring, slice, indexOf.
Дана строка 'я учу javascript'. Найти количество символов в этой строке.
Дана строка 'я учу javascript'. Вырезать из нее слово 'учу' и слово 'javascript' 3-мя разными способами (через substr, substring, slice).
Дана строка 'я учу javascript'. Найти позицию подстроки 'учу'.
Дана переменная s, в которой хранится какой-либо текст. Реализовать обрезание длинного текста по следующему принципу: если количество символов этого текста больше заданного в переменной n, то в переменную r запишем 1-е n символов строки s и добавим в конец троеточие '…', в противном случае в переменную r записать содержимое переменной s.
Работа с replace
Для решения задач данного блока понадобится метод replace.
Дана строка 'Я-учу-javascript'. Заменить все дефисы на ! с помощью глобального поиска и замены.
Работа с split
Для решения задач данного блока понадобится метод split.
Дана строка 'я учу javascript'. Записать каждое слово этой строки в отдельный элемент массива.
Дана строка 'я учу javascript'. Записать каждый символ этой строки в отдельный элемент массива.
В переменной d лежит дата в формате '2088-8-18'. Преобразовать эту дату в формат '18/8/2088'.
Работа с join
Для решения задач данного блока понадобится метод join.
Дан массив ['я','учу','javascript']. Преобразовать массив в строку 'я+учу+javascript'.
Задачи
Преобразовать 1-ю букву строки в верхний регистр.
Преобразовать 1-ю букву каждого слова строки в верхний регистр.
Преобразовать строку 'var_test_text' в 'varTestText'. Скрипт должен работать с любыми аналогичными строками.