繁体   English   中英

如何在 Dart、Flutter 中拆分字符串

[英]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

我建议使用intlhttps://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM