在 Dart 中,有一种将 String 转换为 int 的便捷方法:
int i = int.parse('123');
转换布尔有类似的东西吗?
bool b = bool.parse('true');
Bool 没有方法。
var val = 'True';
bool b = val.toLowerCase() == 'true';
应该很容易。
使用具有扩展方法支持的最新 Dart 版本,可以使代码看起来更像int
, num
, float
.
extension BoolParsing on String {
bool parseBool() {
return this.toLowerCase() == 'true';
}
}
void main() {
bool b = 'tRuE'.parseBool();
print('${b.runtimeType} - $b');
}
另请参阅https://dart.dev/guides/language/extension-methods
来自@remonh87 的评论如果你想要精确'false'
解析,你可以使用
extension BoolParsing on String {
bool parseBool() {
if (this.toLowerCase() == 'true') {
return true;
} else if (this.toLowerCase() == 'false') {
return false;
}
throw '"$this" can not be parsed to boolean.';
}
}
不,只需使用:
String boolAsString;
bool b = boolAsString == 'true';
您无法按照您的描述执行此操作,bool.parse('true')
因为 Dart SDK 尽可能是轻量级的。
Dart SDK 不像 NET Framework 那样统一,所有基本系统类型都具有以下统一性。
IConvertible.ToBoolean
IConvertible.ToByte
IConvertible.ToChar
IConvertible.ToDateTime
IConvertible.ToDecimal
IConvertible.ToDouble
IConvertible.ToInt16
IConvertible.ToInt32
IConvertible.ToInt64
IConvertible.ToSByte
IConvertible.ToSingle
IConvertible.ToString
IConvertible.ToUInt16
IConvertible.ToUInt32
IConvertible.ToUInt64
这些类型也有parse
方法,包括Boolean
类型。
所以你不能以统一的方式做到这一点。只能靠自己。
其实是的,有!
这很简单
bool.fromEnvironment(strValue, defaultValue: defaultValue);
请记住,您可能需要做strValue.toLowerCase()