我正在使用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)

09-07 11:16