2012-05-11 5 views
0

Я хочу сделать что-то похожее на этот вопрос: regular expression in ruby for strings with multiple patternsПоиск и время в NSString с помощью Regex

Но я хочу сделать это Objective-C. В основном я хочу вывести дату и время из строки с датой и временем после знака @.

Например, у меня есть строка: Feed the Rabbits @12, я хочу, чтобы извлечь дату и время после @, проблема заключается в том, что строка может изменяться в зависимости, например, он мог @12:00, @04/02/12, @04/02/12 12:00, @04/02/12 12:00 или просто @04/02/12. Heres мой текущий код для извлечения чисел из строки (он не обнаруживает «/» или «:», поэтому, если строка @04/02/12, она будет извлекать только @04, потому что она останавливается на «/»).

Я также могу извлечь часть @12:00, используя этот шаблон RegEx @([0-9]+:[0-9][0-9]).

NSString *regEx = @"@(\\d+)"; 

NSString *dateString; 
r = [inputString rangeOfString:regEx options:NSRegularExpressionSearch]; 
if (r.location != NSNotFound) 
{ 
    dateString = [NSString stringWithFormat:@"%@",[inputString substringWithRange:r]]; 
    return dateString; 
} 
else 
{ 
    return @""; 
} 

ответ

1

Регулярное выражение "@ (\ D +)" находит "@", за которой следует одна или более цифр (и фиксирует только цифры). Если вы хотите найти цифры и слэши, тире, двоеточие и т. Д., Вам нужно будет включить их в регулярное выражение. Если вы хотите найти определенные шаблоны чисел & пунктуации, вам понадобятся несколько подвыражений, связанных с символом «или» (то есть символ |).

Ожидание всех возможных способов выражения даты и/или времени - это тяжелая работа, особенно если вы хотите поддерживать несколько локалей. Возможно, было бы более целесообразно, чтобы ваше регулярное выражение захватило что-либо & все после «@» (если вы не знаете, как это сделать, то должны быть полезны документы NSRegularExpression). Затем вы можете передать строку до NSDateFormatter для синтаксического анализа в качестве даты.

 Смежные вопросы

  • Нет связанных вопросов^_^