Dart中是否有像int一样的bool解析?

uelo1irk  于 2022-12-16  发布在  其他
关注(0)|答案(4)|浏览(144)

Dart中,有一种将String转换为int的简便方法:

int i = int.parse('123');

String转换为bool是否有类似的操作?

bool b = bool.parse('true');
daolsyd0

daolsyd01#

Bool没有方法。

var val = 'True';
bool b = val.toLowerCase() == 'true';

应该很简单。
在最近支持扩展方法的Dart版本中,代码看起来更像intnumfloat

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
To the comment from@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.';
  }
}
4sup72z8

4sup72z82#

否。只需用途:

String boolAsString;
bool b = boolAsString == 'true';
vlju58qv

vlju58qv3#

由于Dart SDK是一个尽可能轻量级的工具,因此您无法按照所描述的bool.parse('true')执行此操作。
Dart SDK不像NET Framework那样统一,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类型。
所以你不能以统一的方式来做这件事。只能靠你自己。

v1l68za4

v1l68za44#

实际上是的,有!
这很简单

bool.fromEnvironment(strValue, defaultValue: defaultValue);

请记住,您可能需要执行strValue.toLowerCase()

相关问题