在只有数字和逗号的字符串中,如何将其转换为双精度
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
此代码只有在只有数字和逗号的情况下才能正常工作。
所以我有一个只有数字和逗号的字符串。例如“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
此代码只有在只有数字和逗号的情况下才能正常工作。