将Int转换为格式化字符串(Swift)

时间:2018-04-10 14:56:54

标签: swift string string-formatting

我正在尝试将int格式化为格式化字符串,例如23 - > " 0023",100 - > 0100等等。我已经完成了下面的功能,但它吃掉了10的倍数的每个数字的最后一位数字,比如900变为090而不是0900。 请帮我解决这个问题,谢谢。

func convert(_ score: Int) -> String {
  return String(Float(score) / 1000.0).components(separatedBy: ".").joined()
}

2 个答案:

答案 0 :(得分:7)

除以1000并依赖某个浮点表示是脆弱的,这是一个坏主意。 一个简单的解决方案是使用%ld格式,最少4位数:

func convert(_ score: Int) -> String {
    return String(format: "%04ld", score)
}

print(convert(23)) // 0023

答案 1 :(得分:6)

您可以使用minimumIntegerDigits并将let nf = NumberFormatter() nf.minimumIntegerDigits = 4 nf.locale = Locale(identifier: "en_US_POSIX") // Avoid thousands separator nf.string(for: 23) //"0023" nf.string(for: 90) //"0900" 设置为4来实现目标。

NumberFormatter

出于性能原因,您应该避免每次需要时重新创建It.IsAny<Dictionary<string, object>>() 实例,而是在范围内定义它(即通过使其成为相关类的实例/静态属性),以便它可以重复使用。

相关问题