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

时间:2019-05-28 20:13:11

标签: swift string nsnumber numberformatter

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

3 个答案:

答案 0 :(得分:3)

使用NumberFormatter

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

答案 1 :(得分:0)

swift 4.x:
这是您采用人工方法的解决方案

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

检查“,”在一个字符串中出现了多少次,如下所示:

        print("occurrence of ',': \(a.characters.filter {$0 == ","}.count)")

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

        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

答案 2 :(得分:-1)

迅速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: string12)?.doubleValue
newDouble = myDouble ?? 0.0

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