在只有数字和逗号的字符串中,如何将其转换为双精度

In a string with just numbers and commas how do I convert that into a double

所以我有一个只有数字和逗号的字符串。例如“1,233,323.32”(字符串),但我想将其转换为 1233323.32(双精度)。

使用NumberFormatter:

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
let number = formatter.number(from: "1,233,323.32")

Swift 4.x:
这是您使用手动方法的解决方案

var a = "1,233,323.32"
print(a.contains(","))

检查 ',' 在字符串中出现了多少次,如下所示

print("occurrence of ',': \(a.characters.filter {[=11=] == ","}.count)")

如果 ',' 在字符串中出现 2 次,则使用循环从字符串中删除 ',' 2 次,如下所示

for _ in 1...(a.characters.filter {[=12=] == ","}.count)  {
    a.remove(at: a.index(of: ",")!)
}

print("Ans: \( Double(a)! )")

输出

true
occurrence of ',': 2
Ans: 1233323.32

Swift 4: 所以基本上我们有一个带逗号的字符串,我们只是删除字符串中的所有逗号,然后我们使用 NumberFormatter 将其转换为双精度数。

var newDouble = 0.0
var string = ""
string = textField.text?.replacingOccurrences(of: ",", with: "", options: NSString.CompareOptions.literal, range: nil) ?? ""
let myDouble = NumberFormatter().number(from: string)?.doubleValue
newDouble = myDouble ?? 0.0

此代码只有在只有数字和逗号的情况下才能正常工作。