[英]How to split a String in Dart, Flutter
我从后端得到一个字符串余额,它是这样的 430000。我想要这样的输出 430,000。 我该怎么做?
Row(
children: [
Padding(
padding: const EdgeInsets.only(
left: 12,
),
child: Text(
"₦ ${user.availableBalance.toStringAsFixed(0)} ",
style: TextStyle(
color: Colors.white,
fontSize: 21.sp,
),
)),
],
),
最好的方法是使用正则Regex
,所以在顶部定义它
class _HomeTabState extends State<HomeTab> {
//Regex
RegExp reg = RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'); //immport dar:core
RegExp regex = RegExp(r'([.]*0)(?!.*\d)');
String Function(Match) mathFunc = (Match match) => '${match[1]},'; //match
...
//In your build
Widget build(BuildContext context) {
...
Row(
children: [
Padding(
padding: const EdgeInsets.only(
left: 12,
),
child: Text(
"₦ ${double.parse(user.availableBalance.toString()).toStringAsFixed(0)} " .replaceAllMapped(
reg, mathFunc),
style: TextStyle(
color: Colors.white,
fontSize: 21.sp,
),
)),
],
),
...
}
}
然后使用它只需将您的余额变成双倍然后到 String 以便像这样访问toStringAsFixed(0)
"${double.parse(balance.toString()).toStringAsFixed(0)}".replaceAllMapped(reg, mathFunc),
所以对于 430 -> 将是 430 和 4300 -> 将是 4,300 和 43000 -> 将是 43,000
我建议使用intl
包https://pub.dev/packages/intl
示例用法:
var f = NumberFormat("#,###.##");
print(f.format(123456789.4567));
这将导致以下输出:
123,456,789.46
请注意,
在模式中指定分组分隔符, ###
指定组大小为 3 .##
指定保留两位小数。
检查其他文档: https ://api.flutter.dev/flutter/intl/NumberFormat-class.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.