Lớp được chia sẻ dưới đây cung cấp giải pháp đơn giản sử dụng hai phương pháp quá tải được gọi là StringToBoolean
.
FormatHelper.StringToBoolean(String value)
FormatHelper.StringToBoolean(String value, Boolean NullOrEmptyDefault)
Cả hai biến thể cung cấp một trường insentive chuỗi trận
1) Các chuyển đổi bình thường từ chuỗi để boolean mặc định chuỗi rỗng hoặc null để false
Các ví dụ sau sẽ cho kết quả a boolean
giá trị của false
: -
Boolean myBool = FormatHelper.StringToBoolean("");
Boolean myBool = FormatHelper.StringToBoolean("0");
Boolean myBool = FormatHelper.StringToBoolean("false");
Boolean myBool = FormatHelper.StringToBoolean("False");
Boolean myBool = FormatHelper.StringToBoolean("no");
Boolean myBool = FormatHelper.StringToBoolean("off");
Tất cả các giá trị chuỗi khác sẽ dẫn đến một giá trị Boolean
của true
như: -
Boolean myBool = FormatHelper.StringToBoolean("1");
Boolean myBool = FormatHelper.StringToBoolean("true");
Boolean myBool = FormatHelper.StringToBoolean("True");
Boolean myBool = FormatHelper.StringToBoolean("yes");
Boolean myBool = FormatHelper.StringToBoolean("xyz blah");
Lưu ý: Chỉnh sửa giá trị của BooleanStringOff
trong lớp bên dưới để bao gồm nhiều (hoặc ít hơn) giá trị cho sai/off
2) Theo cùng các quy tắc như 1) ở trên nhưng cho phép giá trị mặc định là true
được cung cấp làm đối số thứ 2 cho chuyển đổi.
Giá trị mặc định được sử dụng khi giá trị String
trống hoặc null
. Điều này hữu ích nếu giá trị chuỗi bị thiếu cần biểu thị trạng thái true
.
Ví dụ mã sau sẽ trở lại true
Boolean myBool = FormatHelper.StringToBoolean("",true);
sau Ví dụ mã sẽ trở false
Boolean myBool = FormatHelper.StringToBoolean("false",true);
Đây là mã cho lớp FormatHelper
public class FormatHelper
{
public static Boolean StringToBoolean(String str)
{
return StringToBoolean(str, false);
}
public static Boolean StringToBoolean(String str, Boolean bDefault)
{
String[] BooleanStringOff = { "0", "off", "no" };
if (String.IsNullOrEmpty(str))
return bDefault;
else if(BooleanStringOff.Contains(str,StringComparer.InvariantCultureIgnoreCase))
return false;
Boolean result;
if (!Boolean.TryParse(str, out result))
result = true;
return result;
}
}
Cảm ơn! Đây là những gì tôi đang tìm kiếm, giải thích tại sao. Nếu một số ngôn ngữ thực sự sử dụng 0 cho đúng, và -1 cho sai, tôi thành thật nghĩ rằng chúng bị hỏng, nhưng đó là một lý do tuyệt vời không tự động giả định thông qua phân tích cú pháp mà một số nhà phát triển có thể sử dụng một cách mù quáng. –
Tại sao, có. Có, nó sẽ xử lý có/không có off/on. – WEFX
Để giải thích thêm lý do tại sao một số ngôn ngữ sử dụng 0 cho đúng và -1 cho sai, hãy xem xét biểu diễn nhị phân của chúng: '00000000' và' 11111111'. – MCattle