Gibt es einen Weg, die Gleichheit der Strings zu überprüfen? ich muss wissen, ob ihr Inhalt gleich ist, nicht Standort.Wie überprüft man die Gleichheit der Zeichenfolgen in clojure, ohne java.lang.String aufzurufen?
danke.
Gibt es einen Weg, die Gleichheit der Strings zu überprüfen? ich muss wissen, ob ihr Inhalt gleich ist, nicht Standort.Wie überprüft man die Gleichheit der Zeichenfolgen in clojure, ohne java.lang.String aufzurufen?
danke.
Gleichheit in Clojure (die =
Funktion) prüft immer Wert, nicht Identität, so sind zwei Zeichenketten =
, wenn sie den gleichen Inhalt haben. Für die meisten Java-Typen, einschließlich String, sendet Clojure =
an Java .equals
. String.equals ist definiert als "stellt die gleiche Zeichenfolge dar".
Wenn Sie Identität testen möchten (Sind diese Zeiger auf den gleichen Speicherort im Speicher?) Verwenden Sie die identical?
-Funktion.
(= "hello" (str "hel" "lo"))
; => true
Die JVM hat einen String-Pool, der höchstens einen Eintrag pro Wert enthält, daher sind Identität und Wertgleichheit die gleichen Vergleiche. Es gibt Möglichkeiten, StringBuilder.
und String.
zu verwenden, wo dies nicht genau richtig ist, aber weil die Clojure-Gleichheitsfunktion .equals
aufruft, wird ein Wertvergleich durchgeführt, wenn die Identitäten unterschiedlich sind.
'(identisch?" Hallo "(str" hel "" lo "))' ist falsch. Der Java-Pool von intern gespeicherten Strings ist nur für Strings, die Konstanten sind. Also '(identisch?" Hallo "" hallo ")' ist wahr, aber sobald Sie eine Zeichenfolge berechnen, ist sie nicht Zeiger-gleich zu anderen. Sie können Lookup/Storage im Pool mit '(identisch?" Hallo "(.intern (str" hel "" lo "))) erzwingen' '(true) – amalloy
Ich muss ein Sicherheitstoken vergleichen, also brauche ich eine Funktion, die Überprüfen Sie, ob der Inhalt identisch ist und keine Platzhalter oder Regex-Ausdrücke akzeptieren. Weißt du, ob die = Funktion von clojure meine Bedürfnisse befriedigt oder ich eine spezifischere Funktion brauche? – jonathanrz
Clojure '=' verwendet keine Platzhalter oder regulären Ausdrücke. –