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

时间:2016-04-08 19:16:34

标签: ios swift nsscanner

我在使用NSScanner时遇到了问题。

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

我试图返回整数。但是,任何在空格之前包含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

由于

1 个答案:

答案 0 :(得分:1)

如果你想在更长的字符串中捕获数字子字符串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))
}