Dart有sprintf,还是只有插值?

mca*_*dre 14 string format printf dart

我想sprintf("%02d", x);在Dart中模拟C ,但是我找不到字符串格式,只能找到字符串插值.

mun*_*ent 6

字符串插值可满足您的大部分需求.如果你想直接格式化数字,也有num.toStringAsPrecision().

  • 不确定我是否同意字符串插值涵盖了所有内容。printf/format 构建诸如 **sprintf("%08d", number)** (最多 8 个前导零的格式数字)和 **sprintf("%.3f", number)** (将数字舍入为 3小数点后的数字)非常简单。我使用过的大多数具有字符串插值的语言也具有 printf 功能(Perl、Ruby...)。 (2认同)

Nik*_*raf 6

intl库提供了几个帮助器来格式化值.请参阅http://api.dartlang.org/docs/releases/latest/intl.html上的API文档

以下是如何将数字转换为双字符串的示例:

import 'package:intl/intl.dart';

main() {
    var twoDigits = new NumberFormat("00", "en_US");
    print(twoDigits.format(new Duration(seconds: 8)));
}
Run Code Online (Sandbox Code Playgroud)


小智 6

我对这个问题采取了不同的方法:通过直接填充字符串,我不必使用任何库(主要是因为 intl 库似乎已停止使用):

x.toString().padLeft(2, "0");
Run Code Online (Sandbox Code Playgroud)

相当于 sprintf("%02d", x);


Lar*_*ann 5

的String.format方法目前不存在,但存在一个错误/特征请求添加它.

  • @GünterZöchbauer,它看起来确实存在,但设法触发500响应.[在'sprintf'中搜索问题跟踪器会将其列为问题.](https://code.google.com/p/dart/issues/list?q=sprintf)从列表页面中,可以查看问题,如果你想跟随它. (2认同)