Re: string search and assignment

Liste des GroupesRevenir à cl lisp 
Sujet : Re: string search and assignment
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp
Date : 26. Jun 2025, 22:07:06
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <103kcpp$3m0dd$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:

Kent M. Pitman wrote:
 
    ... What i want to do is start at the beginning of the
    file( which I can do) and search for the word "entity".
    Once I find this, I want to assign the next word to a
    variable.  ...
 
Use WITH-OPEN-FILE to open the stream.  It will let you specify
a variable to which the stream is bound.  The I/O routines all
take a stream as argument. e.g.,
 
(defun find-word-association-in-file (word file)
  (with-open-file (stream file :direction :input)
    (loop
      (let ((line (read-line stream nil nil)))
        (declare (type string line))
        (unless line (return nil))
        (let ((pos1 (position #\Space line :test #'char-equal)))
          (when (and pos1 (string-equal word line :end2 pos1))
            (let ((pos2 (position #\Space line
                                  :test (complement #'char-equal)
                                  :start pos1)))
              (when pos2
                (return (subseq line pos2
                                (position #\Space line
                                          :test #'char-equal
                                          :start pos2)))))))))))
 
Given a data file "delete-me.text" containing:
 
FOO OOF
BAR RAB XYZZY
BAZ ZAB PLOVER PLUGH
NUL NIL
 
I find that:
 
 (find-word-association-in-file "FOO" "delete-me.text")  => "OOF"
 (find-word-association-in-file "BAZ" "delete-me.text")  => "ZAB"
 (find-word-association-in-file "NUL" "delete-me.text")  => "NIL"
 (find-word-association-in-file "GEE" "delete-me.text")  => NIL

Scheme

(define (find-word-association-in-file word file)
  (with-input-from-file file
    (lambda()
      (let go ((s (read)))
        (cond ((eof-object? s) #f)
              ((equal? s word) (read))
              (#t (go (read))))))))

(find-word-association-in-file 'FOO "delete-me.text")
  ===>
OOF

(find-word-association-in-file 'BAZ "delete-me.text")
  ===>
ZAB

(find-word-association-in-file 'PLOVER "delete-me.text")
  ===>
PLUGH

(find-word-association-in-file 'OOF "delete-me.text")
  ===>
BAR

(find-word-association-in-file 'NOWHERE "delete-me.text")
  ===>
#f
 


Date Sujet#  Auteur
2 Jul 24 * Re: string search and assignment3B. Pym
3 Jul 24 +- Re: string search and assignment1Kaz Kylheku
26 Jun22:07 `- Re: string search and assignment1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal