我在使用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
由于
答案 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))
}