Замена подстроки

Найти в строке указанную подстроку и заменить ее на новую. Строку, ее подстроку для замены и новую подстроку вводит пользователь.

  1. Найти начало (индекс первой буквы) подстроки в строке.
  2. Измерить длину подстроки.
  3. Удалить подстроку из строки, начиная с позиции ее первой буквы и на ее длину.
  4. Вставить новую подстроку в позицию, где раньше была первая буква старой подстроки.

Однако данный алгоритм не является универсальным для всех языков программирования. В каждом языке есть свои методы для работы со строками, хотя большинство из них схожи.

Pascal

var
s,s_old,s_new: string;
i,l_old: byte;
begin
write('Строка: ');
readln(s);
write('Ее заменяемая подстрока: ');
readln(s_old);
write('Новая подстрока: ');
readln(s_new);

i := pos(s_old,s);
l_old := length(s_old);
delete(s,i,l_old);
insert(s_new,s,i);

writeln(s);
end.



Строка: Здравствуйте, Змей Горыныч. Сегодня совещание в 10.00
Ее заменяемая подстрока: Змей Горыныч
Новая подстрока: Арчибальт Аристархович
Здравствуйте, Арчибальт Аристархович. Сегодня совещание в 10.00
Python

print('Строка: ')
s = input()
print('Ее заменяемая подстрока: ')
s_old = input()
print('Новая подстрока: ')
s_new = input()

i = s.find(s_old)
while i != -1:
l = len(s_old)
s = s[0:i] + s_new + s[i+l:]
i = s.find(s_old)

print(s)



Строка:
11 23 44 55 23 22
Ее заменяемая подстрока:
23
Новая подстрока:
!!!
11 !!! 44 55 !!! 22

В данном случае новая строка формируется путем взятия срезов из строки и вставки между ними новой подстроки.

Старая подстрока исключается, т.к. берется срез до ее первого символа и срез после ее последнего символа. Последний символ подстроки определяется сложением индекса ее первого символа с ее длинной.
Basic-256

print "Строка: ";
input s$
print "Ее заменяемая подстрока: ";
input s_old$
print "Новая подстрока: ";
input s_new$

i = instr(s$,s_old$)
l = length(s_old$)

s_start$ = left(s$,i-1)
s_end$ = right(s$,length(s$) - i - l+1)

s$ = s_start$ + s_new$ + s_end$

print s$



Строка: abc def class
Ее заменяемая подстрока: class
Новая подстрока: ord
abc def ord

В Basic-256, в отличие от алгоритма приведенного выше, "вырезаются" части строк до подстроки и после нее. После этого новая строка "собирается" из трех частей: части перед страрой подстрокой, новой подстрокой и части после старой подстроки.

Оцените статью
Добавить комментарий