在Dart中,有一种将String转换为int的简便方法:
Dart
String
int
int i = int.parse('123');
将String转换为bool是否有类似的操作?
bool
bool b = bool.parse('true');
daolsyd01#
Bool没有方法。
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-methodsTo the comment from@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.'; } }
4sup72z82#
否。只需用途:
String boolAsString; bool b = boolAsString == 'true';
vlju58qv3#
由于Dart SDK是一个尽可能轻量级的工具,因此您无法按照所描述的bool.parse('true')执行此操作。Dart SDK不像NET Framework那样统一,NET Framework中所有基本系统类型都具有以下统一性。
bool.parse('true')
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
v1l68za44#
实际上是的,有!这很简单
bool.fromEnvironment(strValue, defaultValue: defaultValue);
请记住,您可能需要执行strValue.toLowerCase()
strValue.toLowerCase()
4条答案
按热度按时间daolsyd01#
Bool没有方法。
应该很简单。
在最近支持扩展方法的Dart版本中,代码看起来更像
int
、num
、float
。另请参见https://dart.dev/guides/language/extension-methods
To the comment from@remonh87如果你想要精确的
'false'
解析,你可以使用4sup72z82#
否。只需用途:
vlju58qv3#
由于Dart SDK是一个尽可能轻量级的工具,因此您无法按照所描述的
bool.parse('true')
执行此操作。Dart SDK不像NET Framework那样统一,NET Framework中所有基本系统类型都具有以下统一性。
这些类型也有
parse
方法,包括Boolean
类型。所以你不能以统一的方式来做这件事。只能靠你自己。
v1l68za44#
实际上是的,有!
这很简单
请记住,您可能需要执行
strValue.toLowerCase()