В предыдущих уроках были рассмотрены: метод search - он возвращает позицию, с которой начинается совпадение, и метод match, который возвращает само совпадение.
В этом уроке рассмотрим метод replace, который находит совпадение в строке и может его заменить.
Метод replace - Поиск и замена совпадений в строке
Чтобы понять, как работает метод replace, рассмотрим такую ситуацию:
Есть переменная, содержащая несколько доменных имен, в которых вместо точек проставлены запятые. Используя метод
replace, нужно найти запятые и заменить их на точки.
<script type="text/javascript">
var comma= "www,site,ru www,my-site,ru and www,her-site,ru"
var regular = /,/g; /* Регулярное выражение - Запятая + глобальный поиск g */
var result = comma.replace(regular,"."); /* Метод replace ищет все запятые в переменной comma и меняет их на точки */
Регулярное выражение ,(запятая)вместе с глобальным поиском g позволяют найти в переменной comma все запятые.
Затем при помощи метода replace осуществляется поиск запятых и замена их на точки ".".
Метод replace не меняет
исходного значения переменной. Поэтому в примере результат работы метода над переменной comma заносим в переменную result.
Домашнее задание - Метод replace - Замена совпадений в строке
Выполните самостоятельно очередное домашнее задание по текущему уроку, где был рассмотрен метод replace, который осуществляет поиск и замену совпадений в строке.
Написать функцию, которая меняет слэши на дефисы.
Ваша задача состоит в том, чтобы написать функцию, которая принимает два параметра.
1. Переменная, в которой содержится номер телефона, записанный с помощью слэшей. var tel = "8/927/31/10/765";
2. Знак, на который нужно заменить слэш. var sign = "-";
Внутри этой функции, с помощью регулярного выражения и метода replace() вам надо заменить все слэши на указанный во втором параметре знак.
В качестве результата, нужно вывести уже измененный телефонный номер на экран.
Подсказка. Помните, что слэш это символ, который используется для создания
регулярного выражения (также как и точка, скобки и т.д.) поэтому,
чтобы сообщить волшебнику, что надо искать именно слэш,
вы должны экранировать его обратным слэшем.
Это домашнее задание довольно простое. Здесь нужно вспомнить работу с функциями. В остальном эта задача во многом похожа на пример текущего урока.
<script type = "text/javascript">
var tel = "8/927/31/10/765";
var sign = "-";
function dash(tel,sign) /* Создаем функцию с двумя параметрами */
{
var regular = /\//g; /* Регулярное выражение - Слэш, который экранируется обратным слэшем + глобальный поиск g */
var result = tel.replace(regular,sign); /* Ищем все слэши и меняем их на содержимое переменной sign - в данном случае это дефис */
document.write(result);
}
dash(tel,sign); /* Создаем функцию с двумя параметрами */
Пояснения к решению в данном случае излишни, так как достаточно комментариев в самом примере.
Внесем в решение небольшую поправку: я решил воспользоваться методом prompt, чтобы с его помощью можно было самостоятельно занести в переменную sign либо дефис, либо любой другой знак. Смотрите пример ниже...
<script type = "text/javascript">
var tel = "8/927/31/10/765";
var sign = prompt("Введите дефис или любой другой знак");
function dash(tel,sign) /* Создаем функцию с двумя параметрами */
{
var regular = /\//g; /* Регулярное выражение - Слэш, который экранируется обратным слэшем + глобальный поиск g */
var result = tel.replace(regular,sign); /* Ищем все слэши и меняем их на содержимое переменной sign */
document.write(result);
}
dash(tel,sign); /* Создаем функцию с двумя параметрами */