Функции вставки и замены подстрок

При обработке строк часто требуется вставить или заменить подстроки. Удаление подстроки из данной строки можно рассматривать как частный случай замены, а именно замены указанной подстроки пустой строкой. С помощью методов объекта String можно написать программу для решения этой задачи. Поскольку она часто встречается, то целесообразно оформить программу в виде функций.

Рассмотрим сначала функцию вставки строки в исходную строку. Назовем ее, например, insstr. Данная функция должна принимать три параметра: исходную строку s1, вставляемую строку s2 и индекс позиции вставки n.

function insstr(s1,s2 ,n) {

return s1.slice(0,n) + s2 + s1.slice(n)

}

insstr ("Привет, друзья", " мои", 7) // "Привет, мои друзья"

insstr("Привет, друзья", " мои", 100) // "Привет, друзья мои"

Теперь займемся функцией, которая заменяет в исходной строке все вхождения заданной подстроки на подстроку замены. Назовем эту функцию replacestr. Она должна принимать три параметра: исходную строку s1, заменяемую подстроку s2 и подстроку s3, которой следует заменить все вхождения s2 в s1 (s2 может встречаться в s1 несколько раз).

Очевидно, прежде всего необходимо найти все вхождения s2 в s1. Если исходная строка не содержит в себе подстрок s2, то функция должна вернуть исходную подстроку без всяких изменений. В противном случае требуется изъять из s1 все вхождения s2, а на их место вставить подстроку s3. Полученная таким образом строка должна возвращаться функцией в качестве результата. Ниже приведено определение функции для замены подстрок и два примера ее вызова:

function replacestr(s1, s2, s3) {

var s = "// обработанная часть строки

while (true) {

i = s1.indexOf(s2) //индекс вхождения s2 в s1

if (i >= 0) {

s = s + s1.substr(0, i) + s3 //обработанная часть строки

s1 = s1.substr(i + s2.length) //оставшаяся часть строки

} else break

}

return s + s1 }

replacestr('bacdae" , "a" , "X") // "bXcdXe"

x = "Иван Иванов"

replacestr (x , "Иван" , "Федор") // "Федор Федоров"

Заметим, что если заменяемая подстрока s2 является пустой, то цикл будет продолжаться бесконечно, поскольку пустая строка входит в состав любой строки.








Дата добавления: 2015-08-01; просмотров: 938;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.