Решение Regex для Objective C

Не уверен, что понимаю, что вы хотите, и не совсем бесплатную функцию (но статический метод в классе шаблона), но я предполагаю, что вы запрашиваете что-то похожее, как показано ниже

template <typename>
struct proFunc;

template <template <typename ...> class C, typename ... Ts>
struct proFunc<C<Ts...>>
 {
   static void func (Ts ...)
    { }
 };
[ 115], что вы можете использовать этот способ

using ArgsTuple = std::tuple<int, float>;

proFunc<ArgsTuple>::func(1, 2.f);

и вы также можете проверить, что

static_assert( std::is_same<decltype(&proFunc<ArgsTuple>::func),
                            void(*)(int, float)>::value, "!" );

Чтобы получить что-то более похожее на свободную функцию, вы можете использовать указатели на функции

auto  funcPnt = &proFunc<ArgsTuple>::func;

funcPnt(3, 4.f);
10
задан rjstelling 3 May 2010 в 23:42
поделиться

6 ответов

Прочтите полную запись на http://cocoawithlove.com .

В Какао NSPredicate работает во многих так же, как и предложение WHERE в SQL. Основная причина того, что NSPredicate переносится на iPhone, что NSPredicate выполняет ту же роль в Основные данные, которые соответствуют условиям "WHERE" в SQL - разрешить постоянное хранилище для получения объектов, удовлетворяющих определенным критериев.

// given an NSDictionary created used the above method named "row"...
NSPredicate *johnSmithPredicate =
    [NSPredicate predicateWithFormat:@"firstname = 'John' AND lastname = 'Smith'"];
BOOL rowMatchesPredicate = [johnSmithPredicate evaluateWithObject:row];

Проверка адреса электронной почты

Оператор сравнения "LIKE" в NSPredicate (NSLikePredicateOperatorType) равно обычно используется как удобное средство тестирование, соответствует ли NSString Регулярное выражение. Это преимущество над полными библиотеками с большим варианты и возможность замены что это уже в Какао - нет библиотеки, без связывания, без проблем.

Вы можете провести простой тест:

NSPredicate *regExPredicate =
    [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regularExpressionString];
BOOL myStringMatchesRegEx = [regExPredicate evaluateWithObject:myString];

Единственный вопрос, который остается, это: что такое регулярное выражение, которое может использоваться для проверки того, что NSString содержит синтаксически правильный адрес электронной почты адрес?

NSString *emailRegEx =
    @"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
    @"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
    @"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
    @"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5"
    @"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-"
    @"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21"
    @"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
8
ответ дан 3 December 2019 в 14:25
поделиться

Попробуйте CSRegex: http://www.cocoadev.com/index.pl?CSRegex

Это быстрый и простой класс регулярных выражений, который может быть брошенным в любой проект Cocoa с минимумом суеты. Он состоит всего из двух файлов и без внешних зависимостей.

2
ответ дан 3 December 2019 в 14:25
поделиться
NSPredicate *predicate;
predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '.*@.*\..*'"];
BOOL result = [predicate evaluateWithObject:@"mail@domain.com"];

Согласно Руководству по предикатам :

Соответствует
Левое выражение равно правому выражению с использованием сравнение в стиле регулярного выражения в соответствии с ICU v3 (подробнее см. ICU Руководство пользователя для регулярных выражений ).

В руководстве можно найти даже пример , написанный Apple .

Вместо SELF вы также можно использовать путь ключа . (И, возможно, некоторые другие литералы тоже.)

13
ответ дан 3 December 2019 в 14:25
поделиться
5
ответ дан 3 December 2019 в 14:25
поделиться

попробуйте это: http://regexkit.sourceforge.net/

1
ответ дан 3 December 2019 в 14:25
поделиться

Другой вариант - это оболочка libregex в Google Toolbox для Mac: http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMRegex.h

0
ответ дан 3 December 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: