Оглавление:
Задача — Замена подстроки
— программирование на Pascal, Си, Кумир, Basic-256, Python
Найти в строке указанную подстроку и заменить ее на новую. Строку, ее подстроку для замены и новую подстроку вводит пользователь.
- Найти начало (индекс первой буквы) подстроки в строке.
- Измерить длину подстроки.
- Удалить подстроку из строки, начиная с позиции ее первой буквы и на ее длину.
- Вставить новую подстроку в позицию, где раньше была первая буква старой подстроки.
Однако данный алгоритм не является универсальным для всех языков программирования. В каждом языке есть свои методы для работы со строками, хотя большинство из них схожи.
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)
l = len(s_old)
s = s[0:i] + s_new + s[i+l:]
print(s) Строка:
11 22 33
Ее заменяемая подстрока:
33
Новая подстрока:
77
11 22 77
В данном случае новая строка формируется путем взятия срезов из строки и вставки между ними новой подстроки.
Старая подстрока исключается, т.к. берется срез до ее первого символа и срез после ее последнего символа. Последний символ подстроки определяется сложением индекса ее первого символа с ее длинной.
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, в отличие от алгоритма приведенного выше, «вырезаются» части строк до подстроки и после нее. После этого новая строка «собирается» из трех частей: части перед страрой подстрокой, новой подстрокой и части после старой подстроки.