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