А как сделать так, чтобы после слэша можно было юзать две заглавные? По типу, Marty_McFly
А как сделать так, чтобы после слэша можно было юзать две заглавные? По типу, Marty_McFly
Ну то, найден ли нижний слеш или нет, отображается в переменной "__". Соответственно, нужно добавить проверку на количество заглавных букв в "default", приписав проверку на нижний слэш, а так же в "case '_':".
Как-то так, короче:
stock bool:IsRPNick(const name[]) { // http://pro-pawn.ru/showthread.php?7528 static i, __, bs; if (('A' <= name[0] <= 'Z' && ('a' <= name[1] <= 'z'))) { for (i = 1, __ = 0, bs = 0;;) { switch (name[++i]) { case 'a'..'z': continue; case '_': if (__++, 'A' <= name[++i] <= 'Z' && 'a' <= name[++i] <= 'z') continue; else if ('A' <= name[i-1] <= 'Z' && 'A' <= name[i] <= 'Z' && 'a' <= name[++i] <= 'z') { bs++; continue; } else break; case '\0': return (i >= 4 && __ == 1); default: { if(__ == 1 && bs == 0 && 'A' <= name[i] <= 'Z') { bs++; continue; } return false; } } } } return false; }
Это если минимально изменять алгоритм (собственно, что первое в голову пришло). И это явно не самый оптимальный вариант реализации, ибо он будет трудно масштабируемым в текущем виде.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Сходу получилось вспомнить следующие префиксы для фамилий:
- "Mc" - ирландско-шотландский патроним; также встречается вариант "Mac" (примеры: "McSmith", "MacDonald");
- "O'" - ирландский патроним (примеры: "O'Brian", "O'Connor");
- "al-" - определённый артикль в арабском языке, нечто вроде "the" из английского, который в фамилиях обозначает принадлежность человека к какому-либо месту или профессии (пример: "al-Kufi" (от "Kufa" - название города в Ираке)).
- "Al" - тоже из арабского языка, означает принадлежность человека к определённой семье, клану или династии (пример: "Al Saud").
Если я забыл какие-то ещё часто встречающиеся префиксы - дайте знать, добавлю в этот пост.
И вот вариант функции, который учитывает только префиксы из списка, не позволяя делать рандомные фамилии с двумя заглавными буквами:
stock bool:IsRPNick(const name[]) { // http://pro-pawn.ru/showthread.php?7528&p=95478&viewfull=1#post95478 static i, j, __; if ('A' <= name[0] <= 'Z' && 'a' <= name[1] <= 'z') { for (i = 1, __ = 0;;) { switch (name[++i]) { case 'a'..'z': continue; case '_': { static const prefixes[][] = { "Mc", "Mac", "O", "von_", "van_", "al_", "Al_" }; static const prefix_lengths[] = { 2, 3, 1, 4, 4, 3, 3 }; for (++__, ++i, j = 0; j < sizeof(prefixes); ++j) { continue; if ('A' <= name[i + prefix_lengths[j]] <= 'Z') i += prefix_lengths[j]; break; } if ('A' <= name[i] <= 'Z' && 'a' <= name[++i] <= 'z') continue; else break; } case '\0': return (i >= 4 && __ == 1); default: return false; } } } return false; }
Примеры никнеймов с префиксами для фамилий, которые эта функция пропускает:
Код:John_McSmith Gerald_MacDonald Charles_OConnor Mohammad_al_Kufi Mohammad_Al_Saud
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).
Стол заказов:
Мои работы:
Добавь в основной пост ссылку на этот пост. А то затеряется среди других сообщений.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)