我想在我的应用程序中显示一个数字,并保持它漂亮,显示前导零以使布局更均匀。在字符串中添加并格式化前导零0
例如
000 500/500 000
001 000/500 000
100 350/500 000
我得到的第一个数字从一个Int,我想它格式化为一个字符串。 有没有一种方法可以确保一个数字总是六位数字,并且还可以得到前导零的范围来以不同的方式对它们进行格式化?
我想在我的应用程序中显示一个数字,并保持它漂亮,显示前导零以使布局更均匀。在字符串中添加并格式化前导零0
例如
000 500/500 000
001 000/500 000
100 350/500 000
我得到的第一个数字从一个Int,我想它格式化为一个字符串。 有没有一种方法可以确保一个数字总是六位数字,并且还可以得到前导零的范围来以不同的方式对它们进行格式化?
这个怎么样?
字符串扩展:
extension String {
func substring(startIndex: Int, length: Int) -> String {
let start = self.startIndex.advancedBy(startIndex)
let end = self.startIndex.advancedBy(startIndex + length)
return self[start..<end]
}
}
用法:
var a = 500
var s = "000000\(a)"
print(s.substring(s.characters.count - 6, length: 6))
a = 500000
s = "000000\(a)"
print(s.substring(s.characters.count - 6, length: 6))
a = 50
s = "000000\(a)"
print(s.substring(s.characters.count - 6, length: 6))
如何在Swift 3中使用advancedBy? –
查看swift 3移植指南https://swift.org/migration-guide/。有一章描述了如何在swift中迁移'advancedBy'。尝试'myCollection.index(myIndex,offsetBy:...)' – Enix
@Enix很好的解决方案,让你度过我的一天! –
NSNumberFormatter
有你需要的一切:
let formatter = NumberFormatter()
formatter.minimumIntegerDigits = 6
formatter.numberStyle = .decimal
print(formatter.string(from: 500)!)
print(formatter.string(from: 1000)!)
print(formatter.string(from: 100_350)!)
请勿设置特定分隔符。保持语言环境的默认值,以便每个用户都能看到正确的格式,但前导零。 – rmaddy
此外,NumberFormatter没有1000Separator属性。 –
我使用的是OS X SDK,所以'000Separator'仍然存在。没有意识到这是旧的(10.4之前的)做事方式。改用'groupingSeparator' –
使用'NSNumberFormatter'。 – rmaddy
@MartinR理解这是为什么我的第一个评论是使用“NSNumberFormatter”,因此数字看起来对于给定的语言环境是正确的。 – rmaddy
3位数分隔符是否被本地化为空格?或有意在场所单独选择?仅仅遵循语言环境可能不是OP所要求的。 – OOPer