Bagaimana cara mengubah String
objek ke Boolean
objek?
Bagaimana cara mengubah String
objek ke Boolean
objek?
Jawaban:
Coba (tergantung pada jenis hasil apa yang Anda inginkan):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Keuntungan:
Boolean.TRUE
atau Boolean.FALSE
.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.
boolean boolean2 = Boolean.valueOf("true");
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
}
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 ... :-))
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!
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.
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
Beginilah cara saya melakukannya:
"1##true".contains( string )
Untuk kasus saya kebanyakan 1 atau benar. Saya menggunakan hash sebagai pembagi.
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
parseBoolean(String s)
tidak melempar pengecualian, menurut Javadoc.
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)$)" );
}
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
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
null
dan sama, mengabaikan case, ke string "true
".Parameter:
s
- String yang berisi representasi boolean untuk diuraikanPengembalian: boolean diwakili oleh argumen string
Sejak: 1.5
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