【发布时间】:2018-10-12 11:39:05
【问题描述】:
【问题讨论】:
-
你试过什么?什么不起作用?有任何错误信息吗?
-
我不明白如何设置现在设置为“,”的分组分隔符
-
是的,但仍在询问是否在不更改语言环境的情况下设置分组分隔符
【问题讨论】:
对于 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);
}
【讨论】:
您无法在不更改语言环境的情况下执行此操作,因为 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));
}
【讨论】: