Bagaimana cara mengubah objek String ke Objek Boolean?


Jawaban:


516

Coba (tergantung pada jenis hasil apa yang Anda inginkan):

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

Keuntungan:

  • Boolean: ini tidak membuat instance baru Boolean, jadi kinerjanya lebih baik (dan lebih sedikit pengumpulan sampah). Ini menggunakan kembali dua contoh dari salah satu Boolean.TRUEatau Boolean.FALSE.
  • boolean: tidak diperlukan instance, Anda menggunakan tipe primitif.

Dokumentasi resmi ada di Javadoc .


DIPERBARUI:

Autoboxing juga dapat digunakan, tetapi memiliki biaya kinerja.
Saya sarankan untuk menggunakannya hanya ketika Anda harus melemparkan diri Anda sendiri, bukan ketika para pemain dihindarkan.


1
tidak akan menugaskan Boolean.valueOf ke boolaen2 menjadi auto-unboxed? Saya tidak melihat perbedaannya dengan parseBoolean di sini.
Alex Feinman

9
Masalah terbesar adalah bahwa Boolean tidak akan pengecualian ketika melihat sesuatu yang seharusnya tidak diterima. Ini akan mengembalikan nilai benar untuk apa pun yang dianggapnya "benar" dan akan mengembalikan nilai false untuk yang lainnya . Jika Anda mencoba menerapkan pencocokan string ke nilai boolean yang sesuai, Anda harus menambahkan logika tambahan untuk menangkap kasus ilegal secara manual.
Brandon Belvin

bagaimana jika saya menggunakanboolean boolean2 = Boolean.valueOf("true");
vipin8169

1
jika objek String adalah null maka Boolean.valueOf (String) akan mengembalikan false. Tapi Boolean dapat menyimpan nilai null juga. Dapatkah Anda memberikan bantuan untuk hal ini.
amit kate

90

Anda harus berhati-hati saat menggunakan Boolean.valueOf (string) atau Boolean.parseBoolean (string) . Alasan untuk ini adalah bahwa metode akan selalu mengembalikan false jika String tidak sama dengan "true" (case diabaikan).

Sebagai contoh:

Boolean.valueOf("YES") -> false

Karena perilaku itu, saya akan merekomendasikan untuk menambahkan beberapa mekanisme untuk memastikan bahwa string yang harus diterjemahkan ke Boolean mengikuti format yang ditentukan.

Misalnya:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}

9
Ini adalah contoh terbaik yang pernah saya lihat dan apa yang seharusnya diimplementasikan dalam tipe Boolean untuk memulai. Melempar pengecualian untuk nilai Boolean yang tidak valid penting untuk banyak aplikasi.
Brandon Belvin

2
Tidak, itu tidak sepenuhnya benar. di sini adalah implementasi yang mendasari parseBoolean public static boolean parseBoolean (String s) {return ((s! = null) && s.equalsIgnoreCase ("true")); }
electricalbah

Heh ... Jika Anda perlu menulis kode seperti itu, maka Anda tidak perlu menelepon Boolean.valueOf. Alih-alih, Anda dapat merestrukturisasi pernyataan if ini sehingga ia akan melakukan apa yang Anda inginkan ;-)

22
Boolean b = Boolean.valueOf(string);

Nilai btrue jika string bukan nol dan sama dengan true(mengabaikan kasus).


17

Selain jawaban yang sangat baik dari KLE, kami juga dapat membuat sesuatu yang lebih fleksibel:

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

(terinspirasi oleh jawaban zlajo ... :-))


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

9

Nah, seperti sekarang pada Januari, 2018, cara terbaik untuk ini adalah dengan menggunakan apache BooleanUtils.toBoolean .

Ini akan mengonversi string boolean seperti apa pun menjadi boolean, misalnya Y, ya, benar, N, tidak, salah, dll.

Sangat berguna!


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

Cara saya untuk mengubah string menjadi boolean.


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

Hasil:

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

Apa itu BooleanUtils?
james.garriss

1
org.apache.commons.lang3.BooleanUtils dari Apache commons Lang API.
Dhana

plus untuk upaya mengumpulkan semua kasus penggunaan.
gaurav

1

Beginilah cara saya melakukannya:

"1##true".contains( string )

Untuk kasus saya kebanyakan 1 atau benar. Saya menggunakan hash sebagai pembagi.


0

Untuk mendapatkan nilai boolean dari sebuah String, coba ini:

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

Jika ada kesalahan, itu akan mengembalikan nol. Contoh:

toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null

5
Sudahkah Anda mencoba ini? :) parseBoolean(String s)tidak melempar pengecualian, menurut Javadoc.
buka

0

Mengapa tidak menggunakan ekspresi reguler?

public static boolean toBoolean( String target )
{
    if( target == null ) return false;
    return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}

0

Kami membuat pustaka soyuz-to untuk menyederhanakan masalah ini (konversi X ke Y). Itu hanya seperangkat jawaban SO untuk pertanyaan serupa. Ini mungkin aneh menggunakan perpustakaan untuk masalah yang begitu sederhana, tetapi sangat membantu dalam banyak kasus serupa.

import io.thedocs.soyuz.to;

Boolean aBoolean = to.Boolean("true");

Silakan periksa - sangat sederhana dan memiliki banyak fitur berguna lainnya


-3

Mengunjungi http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx

Ini akan memberi Anda gambaran tentang apa yang harus dilakukan.

Ini yang saya dapatkan dari dokumentasi Java :

Detail Metode

parseBoolean

public static boolean parseBoolean(String s)

Mengurai argumen string sebagai boolean. Boolean yang dikembalikan mewakili nilai true jika argumen string tidak nulldan sama, mengabaikan case, ke string " true".

Parameter:

s - String yang berisi representasi boolean untuk diuraikan

Pengembalian: boolean diwakili oleh argumen string

Sejak: 1.5


1
Meskipun teks pertanyaannya tidak eksplisit, ini adalah pertanyaan tentang Java. Setidaknya itu ditandai seperti itu. Jawaban ini dapat membingungkan orang.
paulo.albuquerque

-3

Anda dapat langsung menetapkan nilai boolean yang setara dengan string apa pun oleh kelas Sistem dan mengaksesnya di mana saja ..

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
Ini adalah proposal yang sangat rumit untuk mengubah sebuah String menjadi Boolean dan tidak masuk akal.
saw303
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.