首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Swift中使用NSNumberFormatter格式化货币输入

在Swift中使用NSNumberFormatter格式化货币输入
EN

Stack Overflow用户
提问于 2014-07-26 00:47:43
回答 4查看 97.8K关注 0票数 89

我正在创建一个预算应用程序,允许用户输入他们的预算以及交易。我需要允许用户从单独的文本字段输入便士和英镑,它们需要与货币符号一起格式化。我有这个工作良好的时刻,但想让它本地化,因为目前它只与英镑工作。我一直在努力将NSNumberFormatter示例从Objective-C转换到Swift。

我的第一个问题是,我需要为输入字段设置特定于用户位置的占位符。例如:英镑和便士,美元和美分等等。

第二个问题是,需要格式化在每个文本字段中输入的值,例如10216和32,并且需要添加特定于用户位置的货币符号。因此,它将成为£10,216.32或$10,216.32等等。

此外,我还需要在计算中使用格式化数字的结果。那么,如何才能在不遇到问题的情况下做到这一点,而不会遇到货币符号的问题呢?

EN

回答 4

Stack Overflow用户

发布于 2019-02-06 00:31:58

来自@Michael Voccola的答案为Swift 4更新:

代码语言:javascript
运行
复制
extension Double {
    var asLocaleCurrency: String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .currency
        formatter.locale = Locale.current

        let formattedString = formatter.string(from: self as NSNumber)
        return formattedString ?? ""
    }
}

注意:没有强制展开,强制展开是邪恶的。

票数 3
EN

Stack Overflow用户

发布于 2017-03-01 16:52:35

代码语言:javascript
运行
复制
extension Float {
    var convertAsLocaleCurrency :String {
        var formatter = NumberFormatter()
        formatter.numberStyle = .currency
        formatter.locale = Locale.current
        return formatter.string(from: self as NSNumber)!
    }
}

这适用于swift 3.1 xcode 8.2.1

票数 0
EN

Stack Overflow用户

发布于 2018-04-16 16:02:42

Swift 4

代码语言:javascript
运行
复制
formatter.locale = Locale.current

如果你想改变语言环境,你可以这样做

代码语言:javascript
运行
复制
formatter.locale = Locale.init(identifier: "id-ID") 

//这是印度尼西亚地区的地区。如果您想按照手机区域使用,请按照上面提到的Locale.current使用

代码语言:javascript
运行
复制
//MARK:- Complete code
let formatter = NumberFormatter()
formatter.numberStyle = .currency
    if let formattedTipAmount = formatter.string(from: Int(newString)! as 
NSNumber) { 
       yourtextfield.text = formattedTipAmount
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24960621

复制
相关文章

相似问题

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