首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSString格式化NSFormatter

使用NSString格式化NSFormatter
EN

Stack Overflow用户
提问于 2014-11-17 09:07:53
回答 2查看 421关注 0票数 0

我得到了一个字符串对象的价格,我想将它格式化为货币。我使用以下代码:

代码语言:javascript
复制
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

如果我尝试这个:

代码语言:javascript
复制
var priceNumber : NSNumber = urlDict.objectForKey("price") as NSNumber 

然后priceNumber也是nil

我应该采取什么方法从字符串中获得格式化的价格?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-17 13:29:58

谢谢大家的建议:我已经将上述解决方案结合在一起,形成了一个功能:

代码语言:javascript
复制
 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

 }
票数 2
EN

Stack Overflow用户

发布于 2014-11-17 09:24:10

格式化程序代码很好。

您必须传递带有货币符号的正确货币字符串。

代码语言:javascript
复制
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设置为空字符串。像这样

代码语言:javascript
复制
func format(amount: String) -> NSNumber? {
  let formatter = NSNumberFormatter()
  formatter.numberStyle = .CurrencyStyle
  formatter.currencySymbol = ""
 ...
}

format("12,00") // Works fine now
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26969058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档