Làm thế nào để chuyển đổi String
đối tượng thành Boolean
đối tượng?
Làm thế nào để chuyển đổi String
đối tượng thành Boolean
đối tượng?
Câu trả lời:
Hãy thử (tùy thuộc vào loại kết quả bạn muốn):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Lợi thế:
Boolean.TRUE
hoặc Boolean.FALSE
.Các tài liệu chính thức là trong Javadoc .
CẬP NHẬT:
Autoboxing cũng có thể được sử dụng, nhưng nó có chi phí hiệu năng.
Tôi đề nghị chỉ sử dụng nó khi bạn sẽ phải tự đúc, chứ không phải khi diễn viên có thể tránh được.
boolean boolean2 = Boolean.valueOf("true");
Bạn phải cẩn thận khi sử dụng Boolean.valueOf (chuỗi) hoặc Boolean.parseBoolean (chuỗi) . Lý do cho điều này là các phương thức sẽ luôn trả về false nếu Chuỗi không bằng "true" (trường hợp bị bỏ qua).
Ví dụ:
Boolean.valueOf("YES") -> false
Do hành vi đó, tôi khuyên bạn nên thêm một số cơ chế để đảm bảo rằng chuỗi cần được dịch sang Boolean tuân theo một định dạng đã chỉ định.
Ví dụ:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Bên cạnh câu trả lời xuất sắc của KLE, chúng ta cũng có thể làm cho một cái gì đó linh hoạt hơn:
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");
(lấy cảm hứng từ câu trả lời của zlajo ... :-))
Chà, như bây giờ vào tháng 1 năm 2018, cách tốt nhất cho việc này là sử dụng apache BooleanUtils.toBoolean
.
Điều này sẽ chuyển đổi bất kỳ boolean như chuỗi thành boolean, ví dụ Y, yes, true, N, no, false, v.v.
Thực sự tiện dụng!
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.");
}
Cách của tôi để chuyển đổi chuỗi thành 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));
}
Kết quả:
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
Đây là cách tôi đã làm nó:
"1##true".contains( string )
Đối với trường hợp của tôi chủ yếu là 1 hoặc đúng. Tôi sử dụng băm như chia.
Để lấy giá trị boolean của Chuỗi, hãy thử điều này:
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.
}
}
Nếu có lỗi, nó sẽ trả về null. Thí dụ:
toBoolean("true"); // Returns true
toBoolean("tr.u;e"); // Returns null
parseBoolean(String s)
không ném một ngoại lệ, theo Javadoc.
Tại sao không sử dụng một biểu thức thông thường?
public static boolean toBoolean( String target )
{
if( target == null ) return false;
return target.matches( "(?i:^(1|true|yes|oui|vrai|y)$)" );
}
Chúng tôi đã tạo thư viện Soyuz-to để đơn giản hóa vấn đề này (chuyển đổi X thành Y). Nó chỉ là một bộ câu trả lời SO cho các câu hỏi tương tự. Điều này có thể lạ khi sử dụng thư viện cho một vấn đề đơn giản như vậy, nhưng nó thực sự giúp ích trong rất nhiều trường hợp tương tự.
import io.thedocs.soyuz.to;
Boolean aBoolean = to.Boolean("true");
Vui lòng kiểm tra - nó rất đơn giản và có nhiều tính năng hữu ích khác
Truy cập http://msdn.microsoft.com/en-us/l Library / system.boolean.parse.aspx
Điều này sẽ cho bạn một ý tưởng về những gì để làm.
Đây là những gì tôi nhận được từ tài liệu Java :
Chi tiết phương pháp
parseBoolean
public static boolean parseBoolean(String s)
Phân tích đối số chuỗi dưới dạng boolean. Boolean được trả về đại diện cho giá trị true nếu đối số chuỗi không
null
và bằng nhau, bỏ qua trường hợp, với chuỗi "true
".Thông số:
s
- Chuỗi chứa biểu diễn boolean được phân tích cú phápTrả về: boolean được biểu thị bằng đối số chuỗi
Từ: 1,5
bạn có thể trực tiếp đặt giá trị boolean tương đương với bất kỳ chuỗi nào theo lớp System và truy cập nó ở bất cứ đâu ..
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