任何数字的Swift搜索字符串?

时间:2014-11-15 20:30:46

标签: string swift

我正在尝试让我的应用识别日期。我有一个搜索的字符串数组。我正在使用rangeOfString()来搜索日期中的“/”。但是,字符串中的某些区域具有不属于日期的反斜杠,这会使搜索变得混乱。我可以让它搜索一个反斜杠后紧跟一个数字。在PHP中,它将是preg_match(“/// [0-9] /”),但是如何用Swift完成?

1 个答案:

答案 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));
}