我得到了一个字符串对象的价格,我想将它格式化为货币。我使用以下代码:
var priceString : NSString = urlDict.objectForKey("price") as NSString
var formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = NSLocale.currentLocale()
let priceNumber = formatter.numberFromString(priceString)我正在priceString中很好地获取数据,但priceNumber是nil。
如果我尝试这个:
var priceNumber : NSNumber = urlDict.objectForKey("price") as NSNumber 然后priceNumber也是nil。
我应该采取什么方法从字符串中获得格式化的价格?
发布于 2014-11-17 13:29:58
谢谢大家的建议:我已经将上述解决方案结合在一起,形成了一个功能:
func formatAsPrice(priceString: NSString) -> NSString {
let rsSymbol = "\u{20B9}" // The currency symbol for India
var priceStrTemp = priceString
priceStrTemp = rsSymbol + priceStrTemp
var formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = NSLocale.currentLocale()
formatter.locale = NSLocale(localeIdentifier: "en_IN") //Explicit
formatter.secondaryGroupingSize = 2 // grouping as Indian currency style
let priceNumber = formatter.numberFromString(priceStrTemp)!
var finalPrice: NSString! = (rsSymbol + " \(priceNumber)") as NSString!
return finalPrice
}发布于 2014-11-17 09:24:10
格式化程序代码很好。
您必须传递带有货币符号的正确货币字符串。
func format(amount: String) -> NSNumber? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = NSLocale.currentLocale()
return formatter.numberFromString(amount)
}
format("NOK 12,00") // returns 12.00
format("NOK 12") // Also fine
format("$ 12") // Error, my local currency is NOK (Norwegian krone)
format("12,00") // Error, needs currency symbol in the string.如果您想解析尝试而没有像这个"12,00"那样的崇高的货币,那么应该将currencySymbol设置为空字符串。像这样
func format(amount: String) -> NSNumber? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.currencySymbol = ""
...
}
format("12,00") // Works fine nowhttps://stackoverflow.com/questions/26969058
复制相似问题