我正在创建一个预算应用程序,允许用户输入他们的预算以及交易。我需要允许用户从单独的文本字段输入便士和英镑,它们需要与货币符号一起格式化。我有这个工作良好的时刻,但想让它本地化,因为目前它只与英镑工作。我一直在努力将NSNumberFormatter示例从Objective-C转换到Swift。
我的第一个问题是,我需要为输入字段设置特定于用户位置的占位符。例如:英镑和便士,美元和美分等等。
第二个问题是,需要格式化在每个文本字段中输入的值,例如10216和32,并且需要添加特定于用户位置的货币符号。因此,它将成为£10,216.32或$10,216.32等等。
此外,我还需要在计算中使用格式化数字的结果。那么,如何才能在不遇到问题的情况下做到这一点,而不会遇到货币符号的问题呢?
发布于 2019-02-06 00:31:58
来自@Michael Voccola的答案为Swift 4更新:
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 ?? ""
}
}
注意:没有强制展开,强制展开是邪恶的。
发布于 2017-03-01 16:52:35
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
发布于 2018-04-16 16:02:42
Swift 4
formatter.locale = Locale.current
如果你想改变语言环境,你可以这样做
formatter.locale = Locale.init(identifier: "id-ID")
//这是印度尼西亚地区的地区。如果您想按照手机区域使用,请按照上面提到的Locale.current使用
//MARK:- Complete code
let formatter = NumberFormatter()
formatter.numberStyle = .currency
if let formattedTipAmount = formatter.string(from: Int(newString)! as
NSNumber) {
yourtextfield.text = formattedTipAmount
}
https://stackoverflow.com/questions/24960621
复制相似问题