例如
println!("{}", 10_000_000);
Run Code Online (Sandbox Code Playgroud)
结果是
10000000
Run Code Online (Sandbox Code Playgroud)
而我想把它格式化为类似的东西
10,000,000
Run Code Online (Sandbox Code Playgroud)
我浏览了fmt模块文档,但没有什么可以涵盖这种特殊情况.我认为这样的事情会起作用
println!("{:,i}", 10_000_000);
Run Code Online (Sandbox Code Playgroud)
但它会引发错误
invalid format string: expected `}`, found `,`
Run Code Online (Sandbox Code Playgroud)
Kap*_*lan 16
使用千位分隔符 \xe2\x80\x93 格式化数字的最简单方法,但不使用语言环境
\n使用thousandscrate
use thousands::Separable;\n\nprintln!("{}", 10_000_000.separate_with_commas());\nRun Code Online (Sandbox Code Playgroud)\n
仅使用 Rust std 库的单行代码
let num = 10_000_000.to_string()\n .as_bytes()\n .rchunks(3)\n .rev()\n .map(std::str::from_utf8)\n .collect::<Result<Vec<&str>, _>>()\n .unwrap()\n .join(","); // separator\nRun Code Online (Sandbox Code Playgroud)\nPlayground包含一个增强的解决方案,还可以格式化负数
\n没有,而且可能不会。
根据你在哪里上,千位分隔符也可以像工作1,00,00,000,或1.000.000,000和其他一些变种。
本地化不是stdlib的工作,而且format!大多数情况是在编译时处理的(尽管公平地说,可以轻松地将其放置在其运行时部分中),并且您不想将语言环境硬烘焙到程序中。
| 归档时间: |
|
| 查看次数: |
4083 次 |
| 最近记录: |