Bagaimana cara mengubah Stringobjek ke Booleanobjek?
Bagaimana cara mengubah Stringobjek ke Booleanobjek?
Jawaban:
Coba (tergantung pada jenis hasil apa yang Anda inginkan):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Keuntungan:
Boolean.TRUEatau 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
nulldan 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