【问题标题】:Change grouping separator in NumberFormat for Dart更改 Dart 的 NumberFormat 中的分组分隔符
【发布时间】:2018-10-12 11:39:05
【问题描述】:

我有双重价值

double myNum = 110700.00;

我想用NumberFormat修改它的格式

110 700

如何实现?

【问题讨论】:

  • 你试过什么?什么不起作用?有任何错误信息吗?
  • 我不明白如何设置现在设置为“,”的分组分隔符
  • 是的,但仍在询问是否在不更改语言环境的情况下设置分组分隔符

标签: dart number-formatting


【解决方案1】:

对于 int,您还可以使用 String 实用程序以所需的频率添加空格。似乎你不能选择从右边数字母,因此你需要将字符串反转两次。

import 'package:basic_utils/basic_utils.dart';

String formatNumber(int number) {
   var s = StringUtils.reverse(number.toString());
   s = StringUtils.addCharAtPosition(s, " ", 3, repeat: true);
   return StringUtils.reverse(s);
}

【讨论】:

    【解决方案2】:

    您无法在不更改语言环境的情况下执行此操作,因为 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));
        }
    

    【讨论】:

    • 是的,就是这样做的。您也可以替换例如numberFormatSymbols['en'] 使用此方案。您可以通过不对值进行硬编码而是引用您正在修改的值来使其对原始格式的更改更加健壮。但是著名的语言环境不会经常改变。
    猜你喜欢
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多