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

Swift 在一个只有数字和逗号的字符串中,如何将其转换为双精度,swift,string,nsnumber,numberformatter,Swift,String,Nsnumber,Numberformatter,所以我有一个字符串,只有数字和逗号。例如1233323.32String,但我想将其转换为1233323.32double。使用NumberFormatter: Swift 4.x: 这是您的手动解决方案 var a = "1,233,323.32" print(a.contains(",")) 检查字符串中出现“,”的次数,如下所示 print("occurrence of ',': \(a.characters.filter {$0 == ","}.count)") for _ in 1

所以我有一个字符串,只有数字和逗号。例如1233323.32String,但我想将其转换为1233323.32double。

使用NumberFormatter:

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

var a = "1,233,323.32"
print(a.contains(","))
检查字符串中出现“,”的次数,如下所示

print("occurrence of ',': \(a.characters.filter {$0 == ","}.count)")
for _ in 1...(a.characters.filter {$0 == ","}.count)  {
    a.remove(at: a.index(of: ",")!)
}

print("Ans: \( Double(a)! )")
如果“,”在字符串中出现2次,则使用下面给出的循环从字符串2次中删除“,”

print("occurrence of ',': \(a.characters.filter {$0 == ","}.count)")
for _ in 1...(a.characters.filter {$0 == ","}.count)  {
    a.remove(at: a.index(of: ",")!)
}

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

true
occurrence of ',': 2
Ans: 1233323.32
Swift 4: 所以基本上我们有一个带逗号的字符串,我们只需删除字符串中的所有逗号,然后使用NumberFormatter将其转换为double

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

只有当只有数字和逗号时,此代码才能正常工作

使用数字格式。你试过什么?我试过数字格式,但我不太懂怎么做。我是SWIFT的新手。你能发布你的代码吗?请记住,对于使用不同分隔符进行分组和小数的区域设置的用户,这可能会失败。是的,但这是“静态字符串”。我不理解你回答的要点。对于使用十进制分隔符的区域设置中的用户,字符串(如1233323.32)的number值将为零。