Wenn ich Strings vergleiche, verlasse ich mich lieber nicht auf Instanzmethoden, damit der String, auf dem die Methode aufgerufen wird, null ist. In .NET verwende ich einfach die statische Methode String.Compare (string, string, bool). Bietet Java ein ähnliches eingebautes "Null-sicheres" Zeichenfolgen-Vergleichsprogramm oder muss ich mein eigenes implementieren?bietet Java eine eingebaute statische String.Compare-Methode?
Antwort
Nein, JDK nicht con tain solche Nützlichkeit. Allerdings gibt es mehrere externe Bibliotheken, die das tun. Zum Beispiel org.apache.commons.lang.StringUtils
bietet Null-Safe und equalsIgnoreCase(String, String)
. Guava hat auch ähnliche Hilfsmittel.
Ich denke, die Antwort ist nein, Sie haben es wahrscheinlich zu überprüfen, bevor
if(myString != null && myString.equals("string")) {
// do something
}
Wie andere darauf hingewiesen, Apache Commons hat dieses und auch Spring:
if(StringUtils.hasLength(myString)) {
// do something
}
Gibt es nicht. Apache Commons "StringUtils.equals()
tut es so aus:
public static boolean equals(String str1, String str2) {
return str1 == null ? str2 == null : str1.equals(str2);
}
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo(java.lang.String)
Es ist der zu vergleichen, die einen int zurückgibt. Es gibt auch gleich, gibt einen booleschen Wert zurück. Wenn Sie eine String-Instanz haben, sollte es möglich sein, auszuführen. Wenn Sie instance.equals (null) übergeben, wird false zurückgegeben. Wenn Ihre Instanz null ist, erhalten Sie einen Nullzeiger.
public class App
{
public static void main(String[] args)
{
String myString = "test";
if(myString.equals(null))
{
System.out.println("Its NUll");
}else
{
System.out.println("Not Equal");
}
}
}
-1: Die Frage war über eine ** statische **, Null-Safe-integrierte Methode zum Vergleichen von Strings, nicht, wie Strings zu vergleichen. –
String tut Angebot ein compareTo method, die ohnehin nicht null sicher ist (das heißt Sie Nullwert überprüfen müssen, bevor sie tatsächlich auf das Objekt der comapreTo Methode aufrufen).
Was können Sie tun, ist Ihren eigenen Vergleicher schreiben wie diese
class StringComparator implements Comparator<String> {
public int compare(String s1, String s2) {
if (s1 != null) {
return s1.compareTo(s2);
} else {
if (s2 == null) {
return 0;
} else {
return -1;
}
}
die Eigenschaft, um zu überprüfen gerade tun:
Comparator<String> comp = new Comparator<String>();
System.out.println(comp.compare(s1, s2);
ich nicht tatsächlich den Code testen, so dass es nehmen als ein allgemeines Beispiel. Der Vorteil ist, dass, obwohl Sie trotzdem auf Null Wert überprüfen müssen, Sie es einmal schreiben und mehrmals verwenden können.
Sie können auch innerhalb der String-Klasse a built in Comparator betrachten.
Ja, ich finde, dass ich diese Art von Code jedem neuen Projekt hinzufüge. Es scheint so, als müsste es einen 'Strings.compare (links, rechts) 'geben, um den Null-Check zu handhaben – Kirby
Wenn eine der zu vergleichenden Zeichenfolgen eine Konstante ist, können Sie equals
verwenden, da sie null
verarbeitet.
if("string".equals(mystring)) {
// do something
}
Wenn Sie zwei Variablen haben, dann können Sie Ihre eigene statische Methode schreiben:
public static boolean stringEquals(String s1, String s2) {
if (s1 == null) {
return s2 == null;
}
return s1.equals(s2);
}
Es gibt eine ähnliche Frage hier How to simplify a null-safe compareTo() implementation?
die sagely die Apache Commons ObjectUtils
Klasse
result = ObjectUtils.compare(left, right);
- 1. Java - eine statische Referenz auf die nicht statische Feldliste erstellen
- 2. Haben eingebaute Typen eine Bewegungssemantik?
- 3. Hat Ruby eine eingebaute ... while?
- 4. Bietet Executors.newWorkStealingPool() in Java 8 auch eine Aufgabenwarteschlange?
- 5. Gibt es eine eigenständige Java-Bibliothek, die LDAP-Syntaxanalyse bietet?
- 6. Java Mockito injiziert eine statische Klasse
- 7. notepad ++ Exportieren Eingebaute Sprachen
- 8. Statische Schlüsselwortverwendung in Java
- 9. Java: Statische Zeichenkettenlokalisierung
- 10. Java statische Selbstreferenzen
- 11. Statische/Endgültige Java-Klassen?
- 12. Java statische Liste synchronisieren?
- 13. statische Variable Initialisierung Java
- 14. Java - Generische statische Methoden
- 15. Java statische Code-Analyse
- 16. Java statische Initialisierung Block
- 17. Java statische Klasse/Variablen
- 18. Java statische Code-Block
- 19. Java: Statische transiente Felder
- 20. Statische Verwendung mit Java
- 21. Java nicht-statische Array
- 22. Wie kann eine statische Methode eine Variable ändern? (Java)
- 23. go hat eine eingebaute "print" -Funktion?
- 24. Hat PHPUnit eine eingebaute rekursive Array Vergleichsfunktion?
- 25. Wie kann ich eine eingebaute Klasse überklassifizieren?
- 26. Einige eingebaute pad eine Liste in Python
- 27. Hat MVC 4 eine eingebaute Sitemap-Lösung?
- 28. Geometric Mean: Gibt es eine eingebaute?
- 29. Wie wird eine statische Referenz auf eine nicht statische Methode in Java erstellt?
- 30. Eine kompilierte statische Bibliothek ändern
Bibliotheken haben das. Es gibt ein Apache StringUtils ich denke, und Android hat TextUtils – njzk2