我正在为货币字符串制作格式化程序,例如我有Int
:
let a: Int = 10
let b: Int = 10000
let c: Int = 10000000
我希望它们的格式如下:
let a1:String = "10"
let b1:String = "10 000"
let c1:String = "10 000 000"
所以我需要Swift
中的功能(或扩展名)优雅,你可以建议=)你有一个Int
作为输入参数,你应该把它作为String
输出" "(空格符号)从右到左每3个符号。
答案 0 :(得分:0)
这可能会对您有所帮助:
func formatNumberString(number : String?) -> String?
{
//"10 000 000 M"
// 01234567890123 -> 2,6,10
if (number?.isEmpty == true || number?.length <= 2) {
return number
}
var i : Int = 0
var newNumber : String = ""
for character in (number?.characters)! {
if ((i == 2 || i == 6 || i == 10) && character != " ")
{
newNumber = newNumber + " "
}
i++
}
return newNumber
}
答案 1 :(得分:0)
您应该使用NSNumberFormatter
格式化您的号码:
func numberToCurrency(number: Int) -> String {
let formatter: NSNumberFormatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.positiveSuffix = " M"
formatter.currencySymbol = ""
formatter.maximumFractionDigits = 0
formatter.currencyGroupingSeparator = " "
formatter.usesGroupingSeparator = true
return formatter.stringFromNumber(number)!
}
print(numberToCurrency(1000))
将打印1 000 M
。如果您不想显示M
字符,请设置formatter.positiveSuffix = ""
答案 2 :(得分:0)
你可以使用它作为扩展名,只要输入是字符串
就调用let requiredN = "10000000".convertToFormat()
这是字符串
的扩展名extension String
{
func convertToFormat() -> String
{
return (NSNumberFormatter.localizedStringFromNumber(Int(self)!, numberStyle: NSNumberFormatterStyle.DecimalStyle) as String).stringByReplacingOccurrencesOfString(",", withString: " ")
}
}
如果输入值为Int call
let requiredN = 10000000.convertToFormat()
和Int
的扩展名extension Int
{
func convertToFormat() -> String
{
return (NSNumberFormatter.localizedStringFromNumber(self, numberStyle: NSNumberFormatterStyle.DecimalStyle) as String).stringByReplacingOccurrencesOfString(",", withString: " ")
}
}