gpt4 book ai didi

Swift Playground - 如何将带逗号的字符串转换为带小数的字符串

转载 作者:行者123 更新时间:2023-12-02 03:57:32 32 4
gpt4 key购买 nike

我是 Swift 世界的新手。

如何将带逗号的字符串转换为带小数的字符串?

代码使用点 (.) 就可以正常工作

问题是当我使用逗号 (,) ... 时:var Price

问题的根源是十进制法语键盘使用逗号(,)而不是点(.)

不知道如何使用NSNumberFormattergeneratesDecimalNumbers(如果它是关键的话)。可能有不止一种选择。

//The answer change if "2,25" or "2.25" is used.

var price : String = "2,25"
var priceFloat = (price as NSString).floatValue

//I need to have 2.25 as answer.

var costString = String(format:"%.2f", priceFloat)

感谢您的时间和帮助!

最佳答案

更新:Xcode 8.2.1 • Swift 3.0.2您可以使用 NumberFormatter() 将字符串转换为数字。您只需指定小数分隔符,如下所示:

extension String {
static let numberFormatter = NumberFormatter()
var doubleValue: Double {
String.numberFormatter.decimalSeparator = "."
if let result = String.numberFormatter.number(from: self) {
return result.doubleValue
} else {
String.numberFormatter.decimalSeparator = ","
if let result = String.numberFormatter.number(from: self) {
return result.doubleValue
}
}
return 0
}
}


"2.25".doubleValue // 2.25
"2,25".doubleValue // 2.25

let price = "2,25"
let costString = String(format:"%.2f", price.doubleValue) // "2.25"

您还应该使用 NumberFormat 进行货币格式化,因此创建一个扩展 FloatingPoint 协议(protocol)的只读计算属性货币,以从 String doubleValue 属性返回格式化的字符串。

extension NumberFormatter {
convenience init(style: Style) {
self.init()
self.numberStyle = style
}
}
extension Formatter {
static let currency = NumberFormatter(style: .currency)
}
extension FloatingPoint {
var currency: String {
return Formatter.currency.string(for: self) ?? ""
}
}
<小时/>
let costString = "2,25".doubleValue.currency   // "$2.25"
<小时/>
Formatter.currency.locale = Locale(identifier: "en_US")
"2222.25".doubleValue.currency // "$2,222.25"
"2222,25".doubleValue.currency // "$2,222.25"

Formatter.currency.locale = Locale(identifier: "pt_BR")
"2222.25".doubleValue.currency // "R$2.222,25"
"2222,25".doubleValue.currency // "R$2.222,25"

关于Swift Playground - 如何将带逗号的字符串转换为带小数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28313871/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com