Dizeleri karşılaştırırken, yöntemin çağrıldığı dizenin boş olması durumunda, örnek yöntemlerine güvenmemeyi tercih ederim. .NET'te sadece static String.Compare (string, string, bool) yöntemini kullanıyorum. java benzer bir yerleşik "null-safe" dizesi ile yardımcı programı karşılaştırıyor mu yoksa kendi başımı mı uygulamak zorundayım?java yerleşik bir statik String.Compare yöntemi sağlıyor mu?
cevap
Hayır, JDK uyumlu değil tain böyle bir yardımcı program. Ancak bunu yapan birkaç harici kütüphane var. Örneğin org.apache.commons.lang.StringUtils
, boş güvenli equals(String, String)
ve equalsIgnoreCase(String, String)
sağlar. Guava'nın da benzer araçları var.
Diğerleri işaret ettiğine
if(myString != null && myString.equals("string")) {
// do something
}
önce kontrol etmek muhtemelen, cevap hayır tahmin Apache Commons bu, hem de bahar vardır:
if(StringUtils.hasLength(myString)) {
// do something
}
Yok. Apache Commons 'StringUtils.equals()
bu şekilde yapar:
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)
karşılaştırmak vardır bir int döndüren için. 'un bir boole döndürdüğü de eşittir. Bir dize örneğiniz varsa, yürütme yapabilmelidir. Eğer instance.equals (null) iletirseniz, false döner. senin örneğiniz boşsa, o zaman boş bir işaretçi alırsınız.
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 var: Soru Strings karşılaştırmak için değil, Strings karşılaştırmak için ** statik **, null güvenli yerleşik bir yöntem hakkındaydı. –
Dize yine boş-güvenli değildir teklif bir compareTo method, (aslında nesne üzerinde comapreTo yöntemini çağırmadan önce boş değere için kontrol edilmesi gereken diğer bir deyişle) yapar. Ne yapabilirsiniz
sadece yapmak özelliğini doğrulamak için bu
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;
}
}
gibi kendi Karşılaştırıcısı yazmak geçerli:
Comparator<String> comp = new Comparator<String>();
System.out.println(comp.compare(s1, s2);
Ben aslında kodu test, bu yüzden almadı genel bir örnek olarak. Buradaki yarar, null değerini neyse kontrol etmenize rağmen, bir kez yazıp birkaç kez kullanabilirsiniz.
Ayrıca String sınıfının içinde a built in Comparator'a da bakabilirsiniz.
Evet, bu yeni kodu her yeni projeye eklediğimi buluyorum. Null check işlemek için bir 'Strings.compare (left, right)' olması gerektiği gibi görünüyor – Kirby
Karşılaştırılacak dizelerden biri, null
'u işlediğinden equals
'u kullanabildiğiniz sabittir.Eğer 2 değişkeni varsa sonra kendi statik yöntemi yazabilir
if("string".equals(mystring)) {
// do something
}
:
public static boolean stringEquals(String s1, String s2) {
if (s1 == null) {
return s2 == null;
}
return s1.equals(s2);
}
sagely Apache Commons kullanmaya önerir burada benzer bir soru How to simplify a null-safe compareTo() implementation?
var ObjectUtils
sınıf
result = ObjectUtils.compare(left, right);
- 1. itunes analitiğin kullanılabilirliğini sağlıyor mu?
- 2. easy_install arama komutu sağlıyor mu?
- 3. Ruby'de Java statik yöntemi nasıl görünüyor? Java'da
- 4. Ruby, hiyerarşi çağrılarını göstermek için bir yöntem sağlıyor mu?
- 5. Bir linq sorgusunda string.compare deyimiyle
- 6. Java statik kendinden referanslar
- 7. Node.js hiçbir şey yapmadan verimlilik sağlıyor mu?
- 8. Yorumlar, kodun daha yavaş çalışmasını sağlıyor mu?
- 9. String.Compare() Macar CultureınfoRegionInfo ile
- 10. Statik yapı yöntemi ve statik sınıf yöntemi arasındaki fark nedir?
- 11. statik imports yöntemi
- 12. JSON.net, HTTP yanıt nesnelerini doğrudan kabul eden sınıflar sağlıyor mu?
- 13. Aynı adda bir sınıfta statik ve statik olmayan yöntem JAVA
- 14. Java yerleşik sınıfını yeniden derleyin
- 15. jquery yükleme yöntemi Rails replace_html yöntemine eşdeğer ajax işlevselliği sağlıyor mu?
- 16. Java yöntemi,
- 17. Clojure, Endişelerin Ayrılmasında Nasıl Bir Yaklaşım Sağlıyor?
- 18. Neden bir ClassInitialize yöntemi statik mi olmalı?
- 19. Statik bir python getitem yöntemi nasıl yazılır?
- 20. Statik yöntemi tanımlamanın daha iyi bir yolu
- 21. Neden çoğu System.Array yöntemi statik?
- 22. PowerMock, mockito, statik yöntemi doğrulayın
- 23. Mailer yöntemi aranmıyor mu?
- 24. YCM, yerleşik işlevlerin tamamlanmasını destekliyor mu?
- 25. java.awt.dialog nasıl bir modalite sağlıyor?
- 26. Java statik içe aktarma
- 27. Java "self" (statik) referans
- 28. statik değişken başlatma java
- 29. Java statik değişken
- 30. Java statik başlatma bloğu
kitaplıklarında bunu bulabilirsiniz. Ben bir apache StringUtils olduğunu düşünüyorum, ve android TextUtils – njzk2