String
Nesne nesneye nasıl dönüştürülür Boolean
?
String
Nesne nesneye nasıl dönüştürülür Boolean
?
Yanıtlar:
Deneyin (istediğiniz sonuç türüne bağlı olarak):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Avantajı:
Boolean.TRUE
Veya öğelerinin iki örneğini yeniden kullanır Boolean.FALSE
.Resmi belgeler Javadoc'ta .
GÜNCELLENMİŞ:
Otomatik boks da kullanılabilir, ancak performans maliyeti vardır.
Kullanmayı sadece kendinizi atmanız gerektiğinde kullanmanızı öneririm, oyuncu kadrosu önlenebilir olduğunda değil.
boolean boolean2 = Boolean.valueOf("true");
Boolean.valueOf (string) veya Boolean.parseBoolean (string) kullanırken dikkatli olmalısınız . Bunun nedeni, String "true" değerine eşit değilse yöntemlerin her zaman false değerini döndürmesidir (büyük / küçük harf kullanımı yoksayılır).
Örneğin:
Boolean.valueOf("YES") -> false
Bu davranış nedeniyle, bir Boole'ye çevrilmesi gereken dizenin belirli bir biçimi izlemesini sağlamak için bazı mekanizmalar eklemenizi öneririm.
Örneğin:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
KLE'nin mükemmel cevabının yanı sıra, daha esnek bir şey de yapabiliriz:
boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") ||
string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") ||
string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") ||
string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");
(Zlajo'nun cevabından esinlenerek ... :-))
Peki, şimdi Ocak 2018'de olduğu gibi, bunun için en iyi yol apache kullanmaktır BooleanUtils.toBoolean
.
Bu, herhangi bir boole dizesini boole dönüştürür, örneğin Y, evet, doğru, N, hayır, yanlış, vb.
Gerçekten kullanışlı!
public static boolean stringToBool(String s) {
s = s.toLowerCase();
Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));
if (trueSet.contains(s))
return true;
if (falseSet.contains(s))
return false;
throw new IllegalArgumentException(s + " is not a boolean.");
}
Dizeyi boole'ye dönüştürme yolum.
String[] values= new String[]{"y","Y","n","N","Yes","YES","yes","no","No","NO","true","false","True","False","TRUE","FALSE",null};
for(String booleanStr : values){
System.out.println("Str ="+ booleanStr +": boolean =" +BooleanUtils.toBoolean(booleanStr));
}
Sonuç:
Str =N: boolean =false
Str =Yes: boolean =true
Str =YES: boolean =true
Str =yes: boolean =true
Str =no: boolean =false
Str =No: boolean =false
Str =NO: boolean =false
Str =true: boolean =true
Str =false: boolean =false
Str =True: boolean =true
Str =False: boolean =false
Str =TRUE: boolean =true
Str =FALSE: boolean =false
Str =null: boolean =false
Ben böyle yaptım:
"1##true".contains( string )
Benim durumum çoğunlukla 1 ya da doğru. Karmaları bölücü olarak kullanıyorum.
Bir Dizenin boole değerini almak için şunu deneyin:
public boolean toBoolean(String s) {
try {
return Boolean.parseBoolean(s); // Successfully converted String to boolean
} catch(Exception e) {
return null; // There was some error, so return null.
}
}
Bir hata varsa, null değerini döndürür. Misal:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
Javadoc'a göre :) bir istisna atmıyor.
Neden düzenli ifade kullanmıyorsunuz?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
Bu sorunu basitleştirmek için soyuz-to kütüphanesi oluşturduk (X'i Y'ye dönüştürmek). Benzer sorular için sadece bir dizi SO cevabı. Bu kadar basit bir sorun için kütüphaneyi kullanmak garip olabilir, ancak birçok benzer durumda gerçekten yardımcı olur.
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
Lütfen kontrol edin - çok basit ve diğer birçok kullanışlı özelliğe sahip
Http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx adresini ziyaret edin.
Bu size ne yapmanız gerektiği hakkında bir fikir verecektir.
Java belgelerinden aldığım şey bu :
Yöntem Ayrıntısı
parseBoolean
public static boolean parseBoolean(String s)
Dize bağımsız değişkenini bir boole olarak ayrıştırır. Döndürülen boolean, dize bağımsız değişkeni
null
"true
" dizesine büyük / küçük harf duyarlı değilse ve eşitse true değerini temsil eder .Parametreler:
s
- Ayrıştırılacak boole temsilini içeren DizeDöndürür: dize bağımsız değişkeniyle temsil edilen boole
Şu tarihten beri: 1.5
System sınıfına göre herhangi bir dizeye eşdeğer boolean değerini doğrudan ayarlayabilir ve her yerden erişebilirsiniz.
System.setProperty("n","false");
System.setProperty("y","true");
System.setProperty("yes","true");
System.setProperty("no","false");
System.out.println(Boolean.getBoolean("n")); //false
System.out.println(Boolean.getBoolean("y")); //true
System.out.println(Boolean.getBoolean("no")); //false
System.out.println(Boolean.getBoolean("yes")); //true