วิธีการแปลงString
วัตถุเป็นBoolean
วัตถุ?
วิธีการแปลงString
วัตถุเป็นBoolean
วัตถุ?
คำตอบ:
ลอง (ขึ้นอยู่กับประเภทผลลัพธ์ที่คุณต้องการ):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
ความได้เปรียบ:
Boolean.TRUE
Boolean.FALSE
เอกสารอย่างเป็นทางการอยู่ในJavadoc
UPDATED:
สามารถใช้ Autoboxing ได้ แต่จะมีค่าใช้จ่ายด้านประสิทธิภาพ
ฉันแนะนำให้ใช้เฉพาะเมื่อคุณจะต้องร่ายเองเท่านั้นไม่ใช่เมื่อนักแสดงสามารถหลีกเลี่ยงได้
boolean boolean2 = Boolean.valueOf("true");
คุณจะต้องระวังเมื่อใช้Boolean.valueOf (สตริง)หรือBoolean.parseBoolean (สตริง) เหตุผลนี้คือวิธีการที่มักจะกลับเท็จถ้าสตริงไม่เท่ากับ "จริง" (กรณีที่จะถูกละเว้น)
ตัวอย่างเช่น:
Boolean.valueOf("YES") -> false
เนื่องจากพฤติกรรมดังกล่าวฉันขอแนะนำให้เพิ่มกลไกบางอย่างเพื่อให้แน่ใจว่าสตริงที่ควรแปลเป็นบูลีนเป็นไปตามรูปแบบที่ระบุ
ตัวอย่างเช่น
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Boolean b = Boolean.valueOf(string);
ค่าของb
เป็นจริงถ้าสตริงไม่เป็นโมฆะและเท่ากับtrue
(ไม่สนใจขนาดตัวพิมพ์)
นอกเหนือจากคำตอบที่ยอดเยี่ยมของ KLE แล้วเรายังสามารถทำให้บางอย่างมีความยืดหยุ่นมากขึ้น:
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 ... :-))
boolean b = string.equalsIgnoreCase("true");
ดีที่ตอนนี้อยู่ใน ม.ค. 2018 วิธีที่ดีที่สุดคือการใช้ของ BooleanUtils.toBoolean
Apache
สิ่งนี้จะแปลงบูลีนใด ๆ เช่นสตริงเป็นบูลีนเช่น Y, ใช่, จริง, N, no, false ฯลฯ
มีประโยชน์จริงๆ!
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.");
}
วิธีแปลงสตริงเป็นบูลีน
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));
}
ผลลัพธ์:
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
นี่คือวิธีที่ฉันทำ:
"1##true".contains( string )
สำหรับกรณีของฉันส่วนใหญ่เป็น 1 หรือจริง ฉันใช้แฮชเป็นตัวแบ่ง
ในการรับค่าบูลีนของสตริงลองทำดังนี้:
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.
}
}
หากมีข้อผิดพลาดมันจะกลับเป็นโมฆะ ตัวอย่าง:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
ไม่ส่งข้อยกเว้นตาม Javadoc
ทำไมไม่ใช้การแสดงออกปกติ?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
เราสร้างไลบรารี่ Soyuz-toเพื่อทำให้ปัญหานี้ง่ายขึ้น (แปลง X เป็น Y) มันเป็นชุดของคำตอบ SO สำหรับคำถามที่คล้ายกัน อาจเป็นเรื่องแปลกที่จะใช้ห้องสมุดสำหรับปัญหาง่ายๆ แต่จริงๆแล้วมันช่วยได้ในหลายกรณีที่คล้ายกัน
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
โปรดตรวจสอบ - ง่ายมากและมีคุณสมบัติที่มีประโยชน์อื่น ๆ อีกมากมาย
เยี่ยมชมhttp://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx
สิ่งนี้จะทำให้คุณมีความคิดว่าจะทำอย่างไร
นี่คือสิ่งที่ฉันได้รับจากเอกสาร Java :
รายละเอียดวิธีการ
parseBoolean
public static boolean parseBoolean(String s)
แยกวิเคราะห์อาร์กิวเมนต์สตริงเป็นบูลีน บูลีนที่ส่งคืนแสดงถึงค่าจริงถ้าอาร์กิวเมนต์สตริงไม่
null
และเท่ากับ, ไม่สนใจขนาดตัวพิมพ์, กับสตริง "true
"พารามิเตอร์:
s
- สตริงที่มีการแทนค่าบูลีนที่จะแยกวิเคราะห์คืนค่า:บูลีนที่แสดงโดยอาร์กิวเมนต์สตริง
ตั้งแต่: 1.5
คุณสามารถตั้งค่าบูลีนที่เทียบเท่าโดยตรงกับสตริงใด ๆ โดยคลาสระบบและเข้าถึงได้ทุกที่ ..
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