(def filename "dictionary2.txt")
(defn check_word [filename word]
(with-open [r (clojure.java.io/reader filename)]
(doseq [line (line-seq r)]
(if (compare line word)
(println word)))))
(check_word filename "wizard")
Es wird "gefunden" so viele wie die Anzahl der Zeilen in der Textdatei. Warum ist die Aussage immer wahr? Das Wort "Wizard" existiert in der Wörterbuchdatei.Clojure - Vergleichen einer Zeile mit einer Zeichenfolge
'compare' gibt eine Zahl zurück, die im booleschen Kontext immer zu' true' ausgewertet wird. – Lee
@Lee identisch? hat auch nicht funktioniert. Wie überprüfen Sie? – iyazici
Vergleichen liefert -1, 0 oder 1, abhängig von der lexikographischen Reihenfolge der verglichenen Strings. Also, wenn 's1 == s2 => (vergleiche s1 s2) == 0', und die minimale Änderung zu '(null? (vergleiche line word)) 'sollte das beheben .. Aber ich würde lieber mit einfachen' (= (clojure.string/trim line) wort) gehen ' – leetwinski