NSScanner 查找以 0 开头的数字的问题

NSScanner issue with finding numbers that begin with 0

我在使用 NSScanner 时遇到问题。

我有这个字符串: 195 058 042 yuiyui 123

我正在尝试 return 整数。但是,任何在 space 之前包含 0 的数字都不会被扫描 属性.

 var note = "195 048 042 yuiyui 123"

let whitespaceAndPunctuationSet = NSMutableCharacterSet.whitespaceAndNewlineCharacterSet()
let numbersCharacterSet = NSCharacterSet.decimalDigitCharacterSet()

let stringScanner = NSScanner(string: note)

var value = 0
while stringScanner.scanInteger(&value) {
    print(value)
}

这将打印以下内容: 195 48岁 42

它缺少“048”中的 0 但我不确定为什么

它应该打印以下内容

195 048 42

谢谢

如果要捕获数字子串里面较长的字符串,NSRegularExpression更合适:

let note = "195 048 042 yuiyui 123"

let regex = try! NSRegularExpression(pattern: "\d+", options: [])

regex.enumerateMatchesInString(note, options: [], range: NSMakeRange(0, note.characters.count)) { result, flag, stop in
    guard let match = result else {
        // result is nil
        return
    }

    let range = match.rangeAtIndex(0)
    print((note as NSString).substringWithRange(range))
}