我正在使用NSScanner
扫描字符串并从中提取双精度。这是我尝试解决问题的沙盒代码
let string = "maxage=1234567890"
let scanner2 = NSScanner(string: string)
scanner2.scanUpToString("=", intoString: nil)
scanner2.scanString("=", intoString: nil)
let maxage2:UnsafeMutablePointer<Double> = UnsafeMutablePointer<Double>()
scanner.scanDouble(maxage2)
print(scanner2.scanLocation)
print(maxage2)
它打印:
7
0x0000000000000000
因此,前两个调用消耗了字符串的第一部分,但随后扫描双精度不起作用。
我看过其他类似的解决方案:
var double = 0.0
scanner.scanDouble(&double)
但这似乎在Swift中不再有效。也许是在早期版本中做的?
我怎样才能解决这个问题?
最佳答案
我想知道您是否通过使用scanner.scanDouble
而不是scanner2.scanDouble
偶然地输入了错字?
这对我有用:
let string = "maxage=1234567890"
let scanner2 = NSScanner(string: string)
scanner2.scanUpToString("=", intoString: nil)
scanner2.scanString("=", intoString: nil)
var aDoubleNumber = 0.0
scanner2.scanDouble(&aDoubleNumber)
print(scanner2.scanLocation)
print(aDoubleNumber)