Swift中非符号字符串为Int或Double
显然,swift没有Isnumber()函数。我知道整数的值是string.toInt()。但是双倍怎么样? 我还发现有人编写了一个toDouble(),但它没有编译(NSNumber?没有名为doubleValue的成员),我猜这是因为不支持可选类型Swift中非符号字符串为Int或Double,swift,char,int,double,type-conversion,Swift,Char,Int,Double,Type Conversion,显然,swift没有Isnumber()函数。我知道整数的值是string.toInt()。但是双倍怎么样? 我还发现有人编写了一个toDouble(),但它没有编译(NSNumber?没有名为doubleValue的成员),我猜这是因为不支持可选类型 extension String { func toDouble() -> Double? { var formatter = NSNumberFormatter() let number = formatter.num
extension String {
func toDouble() -> Double? {
var formatter = NSNumberFormatter()
let number = formatter.numberFromString(self)
if number == nil {
return nil
}
return number.doubleValue
}
}
来源:您可以使用
is
操作符
if number is Double{
//do double thinks
}
就快到了--NSNumberFormatter
返回一个可选的NSNumber
,它有一个doubleValue
属性。您只需正确打开NSNumber
:
extension String {
func toDouble() -> Double? {
enum F {
static let formatter = NSNumberFormatter()
}
if let number = F.formatter.numberFromString(self) {
return number.doubleValue
}
return nil
}
}
"12.345".toDouble() // 12.345
"12345".toDouble() // 12345.0
"asdf".toDouble() // nil
您是否正在尝试检查
字符串是否是数字,或者任何类型的变量是否是数字?我认为这对字符串类型不起作用,但感谢您的帮助input@ericgu你的意思是它对像“$20.00”
这样的字符串不起作用吗?这可能是一个完全不同的问题。是的。我认为这是可能的,但人们应该意识到你的答案的局限性。