【问题标题】:Parsing dynamic data in Dart在 Dart 中解析动态数据
【发布时间】:2023-03-13 07:50:01
【问题描述】:

我正在尝试解析 Dart 中的动态数据。

我所知道的:value 肯定是 int 或 double,但可以表示为 String、int 或 double。 例如,“10.0”、10、10.0

因此,为了将其转换为双精度,我必须执行以下代码:

double parsed = double.parse(value.toString());

看起来合乎逻辑。首先我确保 value 是一个字符串,其次我解析它。但我担心它不是很直观。有更简单的方法吗?

【问题讨论】:

    标签: dart


    【解决方案1】:

    对于您在此处拥有的特定表示集,我可能会将其解析为 JSON:

    var jsonValue = json.parse(value); // jsonValue is int, double or String
    if (jsonValue is String) jsonValue = double.parse(jsonValue); // Is int or double
    double parse = jsonValue.toDouble(); // Only double.
    

    更一般地说,您必须自己弄清楚字符串的格式,然后为每种格式使用适当的方法。您可以为此使用正则表达式:

    var doubleFormat = RegExp(r'^"?([\d.]+)"?$');
    var match = doubleFormat.firstMatch(value);
    if (match == null) throw FormatException("Invalid format!", value);
    var parsed = double.parse(match[1]);
    

    您必须将正则表达式调整为您希望解析的格式。如果格式可能包含空格,您也需要考虑这一点。

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 1970-01-01
      • 2013-12-25
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 2020-09-01
      相关资源
      最近更新 更多