比如说你有:
var possibleDouble = Double("0.")
possibleDouble
的计算结果为 Optional(0.0)
。
在我的例子中,"0."
不是有效的 Double
,所以 possibleDouble
应该是 nil
。有没有一种聪明的方法来检查 "0."
或这种形式的东西不是有效的 Double。
编辑:
有效数字(无论是 Int
、Double
、Float
还是 Decimal
)只能是格式N.N 或 N,其中 N 是某个数字。句点前后可以有一个或多个数字。
最佳答案
您可以扩展 Double
添加新的自定义初始化程序
extension Double {
init?(myCustomFormat:String) {
guard let
standardDouble = Double(myCustomFormat),
firstChar: Character? = myCustomFormat.characters.first,
lastChar: Character? = myCustomFormat.characters.last
where firstChar != "." && lastChar != "."
else { return nil }
self = standardDouble
}
}
只有在以下情况下,此初始化程序才会创建 Double
:
- 内置的初始化器确实成功了,最后一个
- 输入的
String
的第一个字符不是"."
- 输入的
String
的最后一个字符不是"."
例子
Double(myCustomFormat:"1.") // nil
Double(myCustomFormat:".1") // nil
Double(myCustomFormat:"Hello") // nil
Double(myCustomFormat:"1.1") // 1.1
Double(myCustomFormat:"1") // 1
关于string - 你如何检查一个字符串是否是 Swift 中的有效 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309793/