Если бы Вы хотите истинное эксклюзивное или, я просто сделал бы это в коде вместо в regex. В Perl:
/foo/ xor /bar/
, Но Ваш комментарий:
Соответствия: "нечто", несоответствия "панели": "foofoo" "barfoo" "foobarfoo" "barbar" "barfoofoo"
указывает, что Вы действительно не ищете эксклюзивный или. Вы на самом деле имеете в виду "/foo|bar/
, соответствует точно однажды?"
my $matches = 0;
while (/foo|bar/g) {
last if ++$matches > 1;
}
my $ok = ($matches == 1)
Джефф прав, NSCoding
, вероятно, является предпочтительным способом сериализации объектов NSDate
. В любом случае, если вы действительно хотите / должны сохранить дату в виде простой строки даты, это может вам помочь:
На самом деле NSDateFormatter
вообще не ограничивается предопределенными форматами. Вы можете установить произвольный пользовательский формат с помощью свойства dateFormat
. Следующий код должен иметь возможность анализировать строки даты в «международном формате», т.е. в описании формата NSDate
используется:
NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZ";
NSDate* date = [dateFormatter dateFromString:@"2001-03-24 10:45:32 +0600"];
Полный справочник по синтаксису строки формата см. в стандарте Unicode .
] Однако будьте осторожны с -описание
- выходные данные этих методов обычно предназначены для читателей (например, сообщения журнала), и не гарантируется, что он не изменит свой выходной формат в новой версии SDK! Лучше использовать тот же форматировщик даты для сериализации объекта даты:
NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss ZZZ";
NSString* dateString = [dateFormatter stringFromDate:[NSDate date]];
Почему бы вместо сохранения описания в файл не сохранить сам объект? NSDate
соответствует протоколу NSCoding
; сохранение объекта означает, что вам не нужно беспокоиться о его переводе. Дополнительную информацию см. В Справочнике протокола NSCoding .
Я бы попытался настроить NSDateFormatter
для успешного анализа строки следующим способом:
- (NSDate *)dateFromString:(NSString *)string
Обратите внимание, что получение может занять некоторое время. ] NSDateFormatter
настроен как раз для успешного синтаксического анализа вашей строки.
Если вы собираетесь хранить данные, ориентированные на программы, как это, я бы также рекомендовал хранить их в более легком для доступа формате, например, CFAbsoluteTime
. После того, как вы добавили его в свою программу, вы можете отформатировать его в международный формат или что-нибудь еще удобочитаемое.
Преобразуйте его в формат, который принимает NSDate, а затем выполните обратное преобразование.
В качестве альтернативы,в зависимости от того, на какой NSDate вы ссылаетесь (!), initWithString должен охватывать международные стандартные даты.