是否有一种简单的和动态的方法来格式化字符串中的数字,使之成为人类可读的?例如,将10000000000转换为10,000,000,000。我已经看到了this的问题,但答案已经过时和破碎了(举个例子)。
发布于 2016-01-11 04:28:56
对我的现场来说,这似乎是可行的!可能不是最惯用的生锈,但它是功能性的。
fn readable(mut o_s: String) -> String {
let mut s = String::new();
let mut negative = false;
let values: Vec<char> = o_s.chars().collect();
if values[0] == '-' {
o_s.remove(0);
negative = true;
}
for (i ,char) in o_s.chars().rev().enumerate() {
if i % 3 == 0 && i != 0 {
s.insert(0, ',');
}
s.insert(0, char);
}
if negative {
s.insert(0, '-');
}
return s
}
fn main() {
let value: i64 = -100000000000;
let new_value = readable(value.to_string());
println!("{}", new_value);
}发布于 2016-01-11 03:59:55
试试这个psuedo算法:
xx时间,然后返回:1. Get the string at `x` times 3 position, or index [(x times 3) - 1], we'll call it `y`.
2. Replace `y` with `"," + y`
发布于 2016-01-11 04:33:39
在我的生活中我从来没有使用过锈菌,但这是我从here翻译出的解决方案。
fn main() {
let i = -117608854;
printcomma(i);
}
fn printcomma(mut i: i32) {
if i < 0 {
print!("-");
i=-i;
}
if i < 1000 {
print!("{}", i.to_string());
return;
}
printcomma(i/1000);
print!(",{:03}", i%1000);
}返回"-117,608,854“
https://stackoverflow.com/questions/34711832
复制相似问题