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

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

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

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

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

textual
Листинг программы
(defun substitute-word (z a s)
  (format nil "~{~a~^ ~}"
          (substitute
           (read-from-string z)
           (read-from-string a)
           (read-from-string
            (concatenate 'string "(" s ")")))))
 
> (substitute-word "zz" "aa" "aa bb aa")
"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
Похожие ответы