Заменить в каждом предложении все вхождения заданного слова на заданное новое слово - Lisp

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите решить: Дан текст. Заменить в каждом предложении все вхождения заданного слова на заданное новое слово. Есть прога которая считает одинаковые символы:
Листинг программы
  1. (defun num-substr
  2. (a s &optional (m (length a)) (z 0) &aux (n (search a s)))
  3. (if n (num-substr a (subseq s (+ n m)) m (1+ z)) z))
  4. CL-USER 1 > (num-substr "a" "banana")
  5. 3

Решение задачи: «Заменить в каждом предложении все вхождения заданного слова на заданное новое слово»

textual
Листинг программы
  1. (defun substitute-word (z a s)
  2.   (format nil "~{~a~^ ~}"
  3.           (substitute
  4.            (read-from-string z)
  5.            (read-from-string a)
  6.            (read-from-string
  7.             (concatenate 'string "(" s ")")))))
  8.  
  9. > (substitute-word "zz" "aa" "aa bb aa")
  10. "ZZ BB ZZ"

Объяснение кода листинга программы

В коде определена функция substitute-word. Она принимает три аргумента: z, a и s.

  1. В строке с форматом nil используется функция format для вывода результата замены слова.
  2. В функции substitute происходит замена слова в строке s.
  3. В функции read-from-string происходит чтение строки из-за кавычек в коде.
  4. В результате concatenate получается строка (s)(s)``.
  5. Результат замены выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы