string - 你如何检查一个字符串是否是 Swift 中的有效 double

标签 string swift double

比如说你有:

var possibleDouble = Double("0.") 

possibleDouble 的计算结果为 Optional(0.0)

在我的例子中,"0." 不是有效的 Double,所以 possibleDouble 应该是 nil。有没有一种聪明的方法来检查 "0." 或这种形式的东西不是有效的 Double。

编辑: 有效数字(无论是 IntDoubleFloat 还是 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:

  1. 内置的初始化器确实成功了,最后一个
  2. 输入的 String 的第一个字符不是 "."
  3. 输入的 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/

相关文章:

ios - 更新 UIMenuController 中的菜单项

ios - 无法将数据发送到特征

ios - UIImageView 溢出自定义表格 View 单元格

c++ - 如何使用 std::string 作为 stxxl::map 中的键

javascript - 使用括号进行简单的字符串操作

python - 在列表元素的选定部分中查找子字符串

swift - 转换函数以处理 Double 和 Float...使用 FloatingPoint 类型?

c++ - L ""and u8"之间的区别“

java - double 和 Double 比较的区别

c++ - 将 double 降级为 float 时没有警告