NumberFormatter() - 可以填充特定数量的空格吗?
NumberFormatter() - pad with a specific number of spaces possible?
我正在尝试使用 NumberFormatter() 创建 CGFloats 的字符串表示形式。理想情况下,我想创建一个带符号的字符串,例如转换
的值
10.1
-> " 10.1"
和
-10.1
-> "- 10.1"
,整数部分用 space 填充。
这是我得到的最接近的值,但它用“0”填充了整数部分,所以我得到
10.1
-> " 010.1"
和
-10.1
到 "-010.1"
如果我不使用 .minimumIntegerDigits
则没有填充。
我正在使用单色spaced 字体来显示值,我试图确保它们在变化时不会变得不稳定,我只是希望有一些方法使用 space 代替 0,否则 .minimumIntegerDigits
的工作原理。
extension CGFloat {
func signedPaddedString() -> String {
let formatter = NumberFormatter()
formatter.positivePrefix = " "
formatter.minimumIntegerDigits = 3
formatter.paddingCharacter = " "
formatter.minimumFractionDigits = 1
formatter.maximumFractionDigits = 1
return formatter.string(from: self as NSNumber)!
}
}
您可以通过设置 positiveFormat
和 negativeFormat
来实现
属性,它们是根据 Unicode Technical Standard #35:
的格式模式
extension FloatingPoint {
func signedPaddedString() -> String {
let formatter = NumberFormatter()
formatter.positiveFormat = " * ##0.0"
formatter.negativeFormat = "-* ##0.0"
return formatter.string(for: self)!
}
}
print((10.1).signedPaddedString()) // " 10.1"
print((-10.1).signedPaddedString()) // "- 10.1"
print((123.45).signedPaddedString()) // " 123.4"
print((-123.45).signedPaddedString()) // "-123.4"
print((0).signedPaddedString()) // " 0.0"
print((-1).signedPaddedString()) // "- 1.0"
如果您想禁止本地化(例如在 countries using decimal comma 中),请添加
formatter.locale = Locale(identifier: "en_US_POSIX")
我正在尝试使用 NumberFormatter() 创建 CGFloats 的字符串表示形式。理想情况下,我想创建一个带符号的字符串,例如转换
的值10.1
-> " 10.1"
和
-10.1
-> "- 10.1"
,整数部分用 space 填充。
这是我得到的最接近的值,但它用“0”填充了整数部分,所以我得到
10.1
-> " 010.1"
和
-10.1
到 "-010.1"
如果我不使用 .minimumIntegerDigits
则没有填充。
我正在使用单色spaced 字体来显示值,我试图确保它们在变化时不会变得不稳定,我只是希望有一些方法使用 space 代替 0,否则 .minimumIntegerDigits
的工作原理。
extension CGFloat {
func signedPaddedString() -> String {
let formatter = NumberFormatter()
formatter.positivePrefix = " "
formatter.minimumIntegerDigits = 3
formatter.paddingCharacter = " "
formatter.minimumFractionDigits = 1
formatter.maximumFractionDigits = 1
return formatter.string(from: self as NSNumber)!
}
}
您可以通过设置 positiveFormat
和 negativeFormat
来实现
属性,它们是根据 Unicode Technical Standard #35:
extension FloatingPoint {
func signedPaddedString() -> String {
let formatter = NumberFormatter()
formatter.positiveFormat = " * ##0.0"
formatter.negativeFormat = "-* ##0.0"
return formatter.string(for: self)!
}
}
print((10.1).signedPaddedString()) // " 10.1"
print((-10.1).signedPaddedString()) // "- 10.1"
print((123.45).signedPaddedString()) // " 123.4"
print((-123.45).signedPaddedString()) // "-123.4"
print((0).signedPaddedString()) // " 0.0"
print((-1).signedPaddedString()) // "- 1.0"
如果您想禁止本地化(例如在 countries using decimal comma 中),请添加
formatter.locale = Locale(identifier: "en_US_POSIX")