更改Dart的NumberFormat中的分组分隔符

moo*_*der 2 number-formatting dart

我有双重价值

double myNum = 110700.00;
Run Code Online (Sandbox Code Playgroud)

我想使用NumberFormat修改其格式

110 700

怎么做?

Ric*_*eap 5

您不能在不更改语言环境的情况下执行此操作,因为GROUP_SEP是最终的。

但是,如果您不介意更改语言环境,则可以在任何特定实例上执行此操作,例如,new NumberFormat('###,000', 'fr')然后选择non-breaking space用作GROUP_SEP的任何语言环境(例如,法语)。当然,然后您将其,作为小数点分隔符,但是如果您从未使用过它,那将是没有意义的。碰巧对问题中的示例有用,但不能一概而论。

可以(尽管很脆弱)定义自己的语言。因此,如果您碰巧是会说英语的澳大利亚人,更喜欢将其non-breaking space作为组分隔符,请定义自己的语言环境(例如zz

import 'package:intl/intl.dart';
import 'package:intl/number_symbols_data.dart';
import 'package:intl/number_symbols.dart';

    main() {
      numberFormatSymbols['zz'] = new NumberSymbols(
        NAME: "zz",
        DECIMAL_SEP: '.',
        GROUP_SEP: '\u00A0',
        PERCENT: '%',
        ZERO_DIGIT: '0',
        PLUS_SIGN: '+',
        MINUS_SIGN: '-',
        EXP_SYMBOL: 'e',
        PERMILL: '\u2030',
        INFINITY: '\u221E',
        NAN: 'NaN',
        DECIMAL_PATTERN: '#,##0.###',
        SCIENTIFIC_PATTERN: '#E0',
        PERCENT_PATTERN: '#,##0%',
        CURRENCY_PATTERN: '\u00A4#,##0.00',
        DEF_CURRENCY_CODE: 'AUD',
      );

      print(new NumberFormat('###,000', 'zz').format(110700));
    }
Run Code Online (Sandbox Code Playgroud)