Ich habe eine Funktion erstellt, um zu überprüfen, ob meine erste Zeichenfolge mit einer zweiten Zeichenfolge endet.Überprüfen, ob die Zeichenfolge mit gegebener Zeichenfolge in clojure endet
In Java haben wir fertige Methode, um dies zu überprüfen, aber in Clojure ist fehlgeschlagen ich ein solches Verfahren zu finden, so geschrieben I benutzerdefinierte Funktion wie folgt:
(defn endWithFun [arg1 arg2]
(= (subs arg1 (- (count arg1) (count arg2)) (count arg1)) arg2))
Ausgänge:
> (endWithFun "swapnil" "nil")
true
> (endWithFun "swapnil" "nilu")
false
Diese funktioniert wie erwartet.
Ich möchte wissen, gibt es eine ähnliche Alternative? Auch in meinem Fall, ich vergleiche Fall feinfühlig. Ich möchte auch die Groß-/Kleinschreibung ignorieren.
Danke, das ist, was ich gesucht habe. Jetzt kann ich sehen, dass ich Java API der 'String' Klasse benutzen kann, indem ich' (.) 'benutze, habe versucht' (subs "swapbil" 1 4) 'und' (. "swapnil" substring 1 4) 'beide geben ans * * wap **, wird die Leistung beeinträchtigt, wenn ich Java in clojure verwende? oder beide haben dieselbe Leistung. – swapy
Ich stelle mir vor, dass die Leistung vergleichbar sein sollte. Sie können einen schnellen Mikro-Benchmark erstellen, wenn Sie sich Sorgen machen. –
Im Allgemeinen ist die einzige Leistungseinbuße, die Sie möglicherweise bei der Verwendung von Java in Clojure erleiden, die Verwendung von Reflektion zum Nachschlagen einer Methode zur Laufzeit, wenn die Klasse eines Objekts zur Kompilierungszeit nicht abgeleitet werden kann. Die "clojure.string" -Funktionen verwenden alle Typhinweise, um Reflektionen zu vermeiden, daher sollte der Leistungsunterschied zwischen den Clojure- und Java-Versionen vernachlässigbar sein. – Alex