Функции вставки и замены подстрок
При обработке строк часто требуется вставить или заменить подстроки. Удаление подстроки из данной строки можно рассматривать как частный случай замены, а именно замены указанной подстроки пустой строкой. С помощью методов объекта 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; просмотров: 1004;