我正在尝试让我的应用识别日期。我有一个搜索的字符串数组。我正在使用rangeOfString()来搜索日期中的“/”。但是,字符串中的某些区域具有不属于日期的反斜杠,这会使搜索变得混乱。我可以让它搜索一个反斜杠后紧跟一个数字。在PHP中,它将是preg_match(“/// [0-9] /”),但是如何用Swift完成?
答案 0 :(得分:3)
如果需要匹配字符串中的任何日期,可以使用NSDataDetector - NSRegularExpression子类来检测某些特定数据:
Swift版本:
var error : NSError?
if let detector = NSDataDetector(types: NSTextCheckingType.Date.rawValue, error: &error) {
let testString = "Today date is 15/11/2014!! Yesterday was 15-11-2014"
let matches = detector.matchesInString(testString, options: .allZeros, range: NSMakeRange(0, countElements(testString))) as [NSTextCheckingResult]
for match:NSTextCheckingResult in matches {
println(match.date, match.range)
}
}
对象版本:
NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeDate
error:NULL];
NSString* testString = @"Today date is 15/11/2014!! Yesterday was 14-11-2014";
NSArray* matches = [detector matchesInString:testString
options:0
range:NSMakeRange(0, testString.length)];
// Will match 2 date occurences
for (NSTextCheckingResult* match in matches) {
NSLog(@"%@ in %@", match.date, NSStringFromRange(match.range));
}