String nesnesi Boolean nesnesine dönüştürmek nasıl?


Yanıtlar:


516

Deneyin (istediğiniz sonuç türüne bağlı olarak):

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

Avantajı:

  • Boolean: Bu yeni Boolean örnekleri oluşturmaz, bu nedenle performans daha iyidir (ve daha az çöp toplama). Boolean.TRUEVeya öğelerinin iki örneğini yeniden kullanır Boolean.FALSE.
  • boolean: örnek gerekmez, ilkel türü kullanırsınız.

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.


1
Boolaen2'ye Boolean.valueOf atama yine de otomatik olarak kutudan çıkarılmayacak mı? Burada parseBoolean ile olan farkı görmüyorum.
Alex Feinman

9
En büyük sorun, Boolean'ın kabul etmemesi gereken bir şey gördüğünde istisna yapmayacağıdır. "Doğru" olarak gördüğü her şey için true değerini döndürür ve diğer her şey için false değerini döndürür . Bir dizeyi uygun bir boolean değeriyle eşleştirmeye çalışıyorsanız, yasadışı vakaları manuel olarak yakalamak için ekstra mantık eklemeniz gerekir.
Brandon Belvin

ne kullanırsamboolean boolean2 = Boolean.valueOf("true");
vipin8169

1
String nesnesi null ise, Boolean.valueOf (String) false değerini döndürür. Ancak Boolean ayrıca null değerini de tutabilir.
amit kate

90

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
}

9
Bu gördüğüm en iyi örnek ve başlamak için Boolean tipinde ne uygulanması gerekiyordu. Geçersiz Boole değeri için bir istisna atmak birçok uygulama için önemlidir.
Brandon Belvin

2
Hayır, bu tamamen doğru değil. parseBoolean genel statik boolean parseBoolean (String s) {return ((s! = null) && s.equalsIgnoreCase ("true")); }
Electricalbah

Heh ... Böyle bir kod yazmanız gerekiyorsa, Boolean.valueOf'u aramanız gerekmez. Bunun yerine bu if deyimini basitçe yeniden yapılandırabilirsiniz, böylece istediğinizi yapar ;-)

22
Boolean b = Boolean.valueOf(string);

bDize null ve eşit değilse true(case yoksayılır) değeri true olur .


17

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 ... :-))


11
boolean b = string.equalsIgnoreCase("true");

9

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ı!


4
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.


3
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

BooleanUtils nedir?
james.garriss

1
org.apache.commons.lang3.BooleanUtils, Apache ortakları Lang API'sından.
Dhana

artı tüm kullanım örneklerini toplama çabaları için.
gaurav

1

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.


0

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

5
Bunu denedin mi? parseBoolean(String s)Javadoc'a göre :) bir istisna atmıyor.
rapt

0

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)$)" );
}

0

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


-3

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 Dize

Döndürür: dize bağımsız değişkeniyle temsil edilen boole

Şu tarihten beri: 1.5


1
Sorunun metni açık olmasa da, bu Java ile ilgili bir sorudur. En azından bu şekilde etiketlendi. Bu cevap insanları şaşırtabilir.
paulo.albuquerque

-3

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

1
Bu, bir String'i Boole'ye dönüştürmenin çok acayip bir önerisidir ve hiçbir anlamı yoktur.
saw303
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.