在 Dart中,有一种将 String转换为 int的方便方法:
Dart
String
int
int i = int.parse('123');
将 String转换为 bool有类似的方法吗?
bool
bool b = bool.parse('true');
不,只需简单使用:
String boolAsString; bool b = boolAsString == 'true';
布尔没有办法。
var val = 'True'; bool b = val.toLowerCase() == 'true';
应该很简单。
随着最近的 Dart 版本与扩展方法的支持,代码可以使看起来更像 int,num,float。
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'解析,可以使用
'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.'; } }
您不能像描述 bool.parse('true')那样执行此操作,因为 Dart SDK 是尽可能轻量级的。
bool.parse('true')
Dart SDK 不像 NETFramework 那样统一,例如,NETFramework 中所有基本系统类型都具有以下统一性。
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类型。
parse
Boolean
所以你不能统一地做这件事,只能靠你自己。
事实上,有的!
这很简单
bool.fromEnvironment(strValue, defaultValue: defaultValue);
请记住,您可能需要做 strValue.toLowerCase()
strValue.toLowerCase()