Sha*_*Man 10 string comma swift-playground
我是斯威夫特世界的新手.
如何将带逗号的String转换为带小数的String?
代码工作正常,带点(.)
问题是当我使用逗号(,)...时:var price
问题的起源是Decimal法语键盘使用逗号(,)而不是点(.)
如果它是密钥,不知道如何使用NSNumberFormatter或generateDecimalNumbers.有不止一个选择.
//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)
Run Code Online (Sandbox Code Playgroud)
感谢您的时间和帮助!
Leo*_*bus 30
更新:Xcode 8.2.1•Swift 3.0.2 您可以使用NumberFormatter()将字符串转换为数字.您只需要指定decimalSeparator如下:
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"
Run Code Online (Sandbox Code Playgroud)
您还应该使用NumberFormat进行货币格式化,因此创建一个只读计算属性货币,扩展FloatingPoint协议以从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) ?? ""
}
}
Run Code Online (Sandbox Code Playgroud)
let costString = "2,25".doubleValue.currency // "$2.25"
Run Code Online (Sandbox Code Playgroud)
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"
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用此Swift 3:
let currentAmount = "2,50"
currentAmount = currentAmount.replacingOccurrences(of: ",", with: ".")
print(currentAmount) // "2.50\n"
Run Code Online (Sandbox Code Playgroud)
小智 5
var price = "2,25"
price = price.replacingOccurrences(of: ",", with: ".")
var priceFloat = (price as NSString).floatValue
Run Code Online (Sandbox Code Playgroud)