闲来用swift写了一个String转换Double的小代码,跟大家分享。
看到网上有嫁接ObjC来完成StringToDouble的转换的,不过我看到有人反馈说如果string中包含了字母,返回值是0,而且如果是“8.88x”这种情况,仍然识别为可转换,转换的结果是8.88。不过由于我用他们的嫁接代码一直报错,没法编译,所以我也没有验证过上面说的两种情况。
我希望如果string包含了非Double字符时可以返回nil,而不是返回0或者8.88这种情况。
我写的代码返回值是Double?,如果测试发现不符合浮点型的格式,就返回nil。
好了,不多说,直接上代码:
import Foundation
extension String {
func toDouble() -> Double? {
//额外判断,如果是空String,返回0.0
if self == "" {
return 0.0
}
//首先,判断这个String是否是一个Float Point
//1.判断它是否包含了数字 正负点 以外的符号,如果包含其他符号则返回nil,否则继续
//1.同时记录点的数量
//1.同时记录正负号的数量
//1.同时记录正负号的位置
var pointCount = 0//用来记录点的数量
var positiveCount =