【发布时间】:2018-03-09 19:07:10
【问题描述】:
所以目前,我有一个由计数器表示的数字。这个数字是递增的,并且会不断变化。我的目标是每 3 位添加逗号,以使该数字在我的应用程序中更具可读性。我遇到的唯一问题是
String number = counter.replaceAllMapped(new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'),
(Match m) => '${m[1]},');
拒绝将整数 counter 作为 int。如何在运行之前将int counter 转换为String middle
String number = middle.replaceAllMapped(new RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'),
(Match m) => '${m[1]},');
我的目标是这样的:
计数器 = 1000;
中间=“1000”;
number = "1,000";
我目前的解决方案是否可行?如果没有,我该如何更改我的代码以实现我的目标?
更新: 这是我的代码:
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int counter = 0;
void _incrementCounter() {
setState(() {
if (counter > 99999999) {
//WinLandingPage();
} else if (counter >= 99000000) {
counter++;
} else if (counter > 990000) {
counter += 1000000;
} else if (counter > 9900) {
counter += 10000;
} else if (counter > 99) {
counter += 100;
} else counter++;
});
}
//BELOW is where the format is taking place, and I have no idea how to
//get this part working. This is my broken attempt.
var f = new NumberFormat("#,###,###,###", "en_US");
var number = f.format(counter);
//What am I doing wrong here?
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar (
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'Try to get $number to 100,000,000.',
),
new Text(
'$number',
style: Theme.of(context).textTheme.display1,
),
],
),
),
floatingActionButton: new FloatingActionButton(
onPressed: _incrementCounter,
backgroundColor: Colors.pinkAccent,
tooltip: 'Increment',
child: new Icon(Icons.add),
),
);
}
}
我在这段代码中做错了什么?我对 Dart 非常陌生,但我正在尽我所能通过试验、错误和你们的支持来解决这个问题。
【问题讨论】:
-
谢谢data_garden。我试图以这种方式显示代码,但我不确定如何使用这个站点。
-
您更新后的问题的实际和预期结果是什么?
-
问题标题应该是“如何在 Dart 中格式化数字?”,对于那些正在寻找如何将 int 转换为字符串的人:stackoverflow.com/questions/54954182/…
标签: dart