答案 0 :(得分:4)
您无法在不更改区域设置的情况下执行此操作,因为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));
}
答案 1 :(得分:0)
对于int,您还可以使用String utils以所需的频率添加空格。似乎由于您无法选择从右边开始计算字母,因此您需要将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);
}