/// <summary> /// Данная функция является основной в библиотеке и наиболее универсальной. /// В качестве параметров ей необходимо передать ФИО в виде трех строк (каждая из которых может /// быть пустой), явно указанный род, требуемое значение падежа. /// При таких условиях этой функцией можно склонять ФИО и его составляющие в любых комбинациях. /// Корректно обрабатываются фамилии с инициалами (Сидоров И.П.) – склоняться будет только фамилия /// (у Сидорова И.П.). Допускается использование инициалов, состоящих более чем из одного символа /// (Иванов Вс.Никод.). Кроме ФИО славянского типа эта функция может выполнять склонение корейских, /// китайских и им подобным имен. При этом первое слово в таком имени соответствует фамилии, /// второе – имени и третье – отчеству в наших терминах. Другими словами, при склонении Иванов Иван /// Иванович и Ли Си Цын не требуется перестановка составляющих ФИО. Поскольку имена подобного вида /// иногда записывают двумя словами (Ли Сицын), то при вызове функции склонения для такой формы записи /// необходимо первым параметром передать пустую строку. В подавляющем большинстве случаев эта функция /// пригодна и для склонения ФИО, записанного в формате "Фамилия Имя [Имя]" (Кеннеди Джон [Фиджеральд]). /// Допускается использование признаков рода в фамилии (-оглы/-кызы), записанных через дефис. /// </summary> /// <param name="surname">Фамилия</param> /// <param name="name">Имя</param> /// <param name="patronimic">Отчество</param> /// <param name="gender">Пол</param> /// <param name="declensionCase">Падеж</param> /// <returns>Результат склонения</returns> public static string GetSNPDeclension(string surname, string name, string patronimic, Gender gender, DeclensionCase declensionCase) { if (surname == null) { throw new ArgumentNullException("surname"); } if (name == null) { throw new ArgumentNullException("name"); } if (patronimic == null) { throw new ArgumentNullException("patronimic"); } CheckGender(gender); CheckDeclensionCase(declensionCase); IntPtr[] ptrs = null; try { ptrs = StringsToIntPtrArray(surname, name, patronimic); int resultLen = MaxResultBufSize; int err = decGetFIOPadeg(ptrs[0], ptrs[1], ptrs[2], (Int32)gender, (Int32)declensionCase, ptrs[3], ref resultLen); ThrowException(err); return(IntPtrToString(ptrs, resultLen)); } finally { FreeIntPtr(ptrs); } }
/// <summary> /// Функция выполняет преобразование ФИО, заданного одной строкой и не требует явного указания рода. /// Порядок следования составляющих ФИО в строке параметра – фамилия, имя, отчество. Эта функция, /// как и GetSNPDeclension, тоже допускает использование инициалов и может выполнять преобразование имен /// типа китайских. Для корректной работы функции необходимо наличие трех компонент ФИО /// (имена китайского типа допускается задавать двумя словами). В ряде случаев правильно обрабатываются /// ФИО, записанные в формате "Фамилия Имя [Имя]". /// </summary> /// <param name="surnameNamePatronimic">ФИО0</param> /// <param name="declensionCase">Падеж</param> /// <returns>Результат склонения</returns> public static string GetSNPDeclensionFSAS(string surnameNamePatronimic, DeclensionCase declensionCase) /*public static string GetSNPDeclension(string surnameNamePatronimic, * DeclensionCase declensionCase)*/ { if (surnameNamePatronimic == null) { throw new ArgumentNullException("surnameNamePatronimic"); } CheckDeclensionCase(declensionCase); IntPtr[] ptrs = null; try { ptrs = StringsToIntPtrArray(surnameNamePatronimic); int resultLen = MaxResultBufSize; int err = decGetFIOPadegFSAS(ptrs[0], (Int32)declensionCase, ptrs[1], ref resultLen); ThrowException(err); return(IntPtrToString(ptrs, resultLen)); } finally { FreeIntPtr(ptrs); } }
/// <summary> /// Функция предназначена для склонения пар "Имя Фамилия" (Марк Твен) и требует явного указания рода. /// Эта функция также пригодна для склонения имен собственных типа Джон Фиджеральд Кеннеди. /// В этом случае Джон Фиджеральд следует передавать одним параметром, как имя. Разделитель слов в /// параметре – пробел. /// </summary> /// <param name="nameSurname">ИФ</param> /// <param name="gender">Пол</param> /// <param name="declensionCase">Падеж</param> /// <returns>Результат склонения</returns> public static string GetNSDeclension(string nameSurname, Gender gender, DeclensionCase declensionCase) { if (nameSurname == null) { throw new ArgumentNullException("nameSurname"); } CheckGender(gender); CheckDeclensionCase(declensionCase); IntPtr[] ptrs = null; try { ptrs = StringsToIntPtrArray(nameSurname); int resultLen = MaxResultBufSize; int err = decGetIFPadegFS(ptrs[0], (Int32)gender, (Int32)declensionCase, ptrs[1], ref resultLen); ThrowException(err); return(IntPtrToString(ptrs, resultLen)); } finally { FreeIntPtr(ptrs); } }
/// <summary> /// Функция позволяет получить полное наименование должности и выполнить его преобразование в заданный /// падеж. При объединении удаляются повторяющиеся слова при их наличии. Например: должность – /// Начальник цеха; подразделение – Цех нестандартного оборудования; результат – Начальник цеха /// нестандартного оборудования. /// </summary> /// <param name="appointment">Название должности</param> /// <param name="office">Название подразделения</param> /// <param name="declensionCase">Падеж</param> /// <returns>Результат склонения</returns> public static string GetAppointmentOfficeDeclension(string appointment, string office, DeclensionCase declensionCase) { if (appointment == null) { throw new ArgumentNullException("appointment"); } if (office == null) { throw new ArgumentNullException("office"); } CheckDeclensionCase(declensionCase); IntPtr[] ptrs = null; try { ptrs = StringsToIntPtrArray(appointment, office); int resultLen = MaxResultBufSize; int err = decGetFullAppointmentPadeg(ptrs[0], ptrs[1], (Int32)declensionCase, ptrs[2], ref resultLen); ThrowException(err); return(IntPtrToString(ptrs, resultLen)); } finally { FreeIntPtr(ptrs); } }
private void DeclensionFileTest() { using (FileLog l = new FileLog("declensionFileTest", new FileLogSettings() { DateFolderMask = "yyyy-MM-dd" })) { string[] decl = { "И", "Р", "Д", "В", "Т", "П" }; string[] test = CommonTest.testData1.declensionTestData.Split("\r\n".ToCharArray()); foreach (string s in test) { string[] a = s.Split('\t'); if (a.Length > 3) { DeclensionCase _dc = (DeclensionCase)(decl.IndexOf(a[1]) + 1); if (_dc != DeclensionCase.NotDefind) { string result = Declension.GetDeclension(a[0], _dc).TrimEnd(); if (!result.Equals(a[2].Trim(), StringComparison.OrdinalIgnoreCase)) { l.Debug("\n" + a[0] + "\t" + a[1] + "\t" + a[2] + "\t" + result); } } } } } }
//_____________________________________________________________________________ // z1 - фамилия имя отчество например Железняков Юрий Юрьевич // z2 - Падеж ( по умолчанию = 2 - родительный) // 2 - родительный ( нет кого? ) Железнякова Юрия Юрьевича // 3 - дательный ( кому? ) Железнякову Юрию Юрьевичу // 4 - винительный ( вижу кого? ) Железнякова Юрия Юрьевича // 5 - творительный ( кем? ) Железняковым Юрием Юрьевичем // 6 - предложный ( о ком? ) Железнякове Юрии Юрьевиче // Если задать Z2 меньше 0, то на выходе получим от -1=Железняков Ю. Ю. до -6=Железнякове Ю. Ю. // z3 - параметр Пол может не указываться, но при наличии фамилий с // инициалами точное определение пола невозможно, поэтому предлагается задавать пол этим // параметром 1 - мужской 2 - женский // --------------------------------------------------------------------------------------- // Бибик Галушка Цой Николайчик Наталия Петровна Герценберг Кривошей Капица-Метелица // Если Падеж(Фио ,1 ,3), то на выходе получим Фамилия Имя Отчество и т.д. // Если Падеж(Фио ,1 ,3,"1"), то Фамилия // Если Падеж(Фио ,1 ,3,"2"), то Имя // Если Падеж(Фио ,1 ,3,"3"), то Отчество // Если Падеж(Фио, 1 ,3,"12"), то Фамилия Имя // Если Падеж(Фио, 1 ,3,"23"), то Имя Отчество // Если Падеж(Фио,-1 ,3,"231"),то И. О. Фамилия // Если Падеж(Фио,-1 ,3,"23"), то И. О. /// <summary> /// /// Author: Железняков Юрий Юрьевич (aka SuperJur) (mailto:[email protected]) /// </summary> /// <param name="fn">фамилия имя отчество, например Железняков Юрий Юрьевич</param> /// <param name="declCase">падеж</param> /// <param name="gender">параметр 'пол' может не указываться, но при наличии фамилий с /// инициалами точное определение пола невозможно, поэтому предлагается задавать пол этим /// параметром</param> /// <param name="part"></param> /// <param name="z5"></param> /// <returns></returns> public static string GetDeclension(string fn, DeclensionCase declCase, DeclensionGender gender = DeclensionGender.Neutral, string partsMask = "123", int part = 1) { try { string z6 = LCase(Right(RTrim(fn), 4)); string z7 = Right(z6, 1); string sp = part.ToString(); if (part < 4 && partsMask.Contains(sp)) { string _FIO = Replace(Mid(fn, InStr(fn + " ", " ") + 1), ".", ". ").Trim(); string _base = ((part == 3) && (z7 == "ы") ? fn : Left(fn, InStr(fn + " ", " ") - 1)); string _token = _declension(_base, (int)declCase, Mid("ча" + z7, (gender == DeclensionGender.Neutral ? (z6 == "оглы" || z6 == "кызы" ? 1 : 3) : (int)gender), 1), part) + " "; partsMask = Replace(partsMask, sp, _token); return(GetDeclension(_FIO, declCase, gender, partsMask, part + 1).Trim()); } else { return(partsMask); } } catch { return("(ошибка)"); } }
private static void CheckDeclensionCase(DeclensionCase declensionCase) { if (!Enum.IsDefined(typeof(DeclensionCase), declensionCase) || declensionCase == DeclensionCase.NotDefind) { throw new ArgumentException("Недопустимое значение падежа: " + declensionCase, "declensionCase"); } }
public string GetPersonNameDeclension(string FIO, DeclensionCase declensionCase) { lock (_locker) { string name = null; string surname = null; string patronymic = null; BLL.Declension.DeclensionBLL.GetSNM(FIO, out surname, out name, out patronymic); string totalName = BLL.Declension.DeclensionBLL.GetSNPDeclension(surname, name, patronymic, (BLL.Declension.DeclensionCase)(int) declensionCase); return(totalName); } }
string GetPattern(string alias, FilterType filterType, DeclensionCase declensionCase) { string pattern = alias; if (filterType != FilterType.None) { pattern += $"|{filterType.GetDecription()}"; } if (declensionCase != DeclensionCase.NotDefind) { pattern += $"|{declensionCase.GetDecription()}"; } return(pattern); }
/// <summary> /// /// </summary> /// <param name="FIO">фамилия имя отчество например Железняков Юрий Юрьевич</param> /// <param name="declansionCase">Падеж</param> /// <param name="gender">параметр Пол может не указываться, но при наличии фамилий с /// инициалами точное определение пола невозможно, поэтому предлагается задавать пол этим /// параметром 1 - мужской 2 - женский </param> /// <param name="part"></param> /// <param name="z5"></param> /// <returns></returns> public static string GetDeclension(string FIO, DeclensionCase declensionCase /*=2*/, DeclensionGender gender /*=3*/, /*Знач*/ string part /*="123"*/, int z5 /*=1*/) { string z6 = LCase(Right(RTrim(FIO), 4)); string z7 = Right(z6, 1); if (z5 < 4) { string _FIO = Trim(Replace(Mid(FIO, InStr(FIO + " ", " ") + 1), ".", ". ")); string _token = _declension(((z5 == 3) && (z7 == "ы") ? FIO : Left(FIO, InStr(FIO + " ", " ") - 1)), (int)declensionCase, Mid("ча" + z7, (gender == DeclensionGender.NotDefind ? (z6 == "оглы" || z6 == "кызы" ? 1 : 3) : (int)gender), 1), z5) + " "; string _part = Replace(part, z5.ToString(), _token); return(GetDeclension(_FIO, declensionCase, gender, _part, z5 + 1)); } else { return(part); } }
/// <summary> /// Функция для склонения одного слова. /// Author: Железняков Юрий Юрьевич (aka SuperJur) (mailto:[email protected]) /// </summary> /// <param name="word">само слово</param> /// <param name="declCase">номер падежа </param> /// <param name="gender">пол</param> /// <param name="part">1-склонять как фамилию, 2-имя, 3-отчество</param> /// <returns></returns> private static string _declension(string word, int declCase /*=2*/, string gender /* = "*" */, int part /* =0 */) { if (word.Length == 2 && part == 1) { return(word); } int z5 = InStr(word, "-"); string z6 = string.Empty; if (z5 > 0) { string[] _name = word.Split('-'); if (part == 1) { z6 = "-" + _declension(_name[1], declCase, gender, part); word = LCase(_name[0]); } else { word = LCase(_name[0]) + "-" + UCase(Left(_name[1], 1)) + Mid(_name[1], 2); } } else { word = LCase(word); } string res; DeclensionCase _dc = (DeclensionCase)Math.Max(declCase, -declCase); string z7 = Right(word, 3); string z8 = Right(z7, 2); string z9 = Right(z8, 1); z5 = word.Length; // ая , ия, ел = орел, ок = брелок на = весна, ма = зима int za = InStr("ая ия ел ок яц ий па да ца ша ба та га ка на ма", z8); int zb = InStr("аеёийоуэюяжнгхкчшщ", Left(z7, 1)); int zd = (za == 4) ? 5 : InStr("айяь", z9); if (_dc == DeclensionCase.Nominative || z9 == "." || (part == 2 && InStr("оиеу" + (gender == "ч" ? "" : "бвгджзклмнпрстфхцчшщъ"), z9) > 0) || (part == 1 && InStr("мия мяэ лия кия жая лея", z7) > 0) || (part < 3 && InStr("эы", z9) > 0)) { zd = 9; } else if (zd == 4 && gender == "ч") { zd = 2; } else if (part == 1) { if (InStr("оеиую", z9) + InStr("их ых аа еа ёа иа оа уа ыа эа юа яа", z8) > 0) { zd = 9; } else if (gender != "ч") { if (za == 1) { zd = 7; } else if (z9 == "а") { zd = (za > 18 && z8 != "на") ? 1 : 6; } else { zd = 9; } } else if (((InStr("ой ый", z8) > 0) && (z5 > 4) && (InStr("опой вбой", Right(word, 4)) == 0)) || (zb > 10 && za == 16)) { zd = 8; } } int ze = InStr("лец нёк вей бей дец пец мец нец рец вец бец тец жец аец иец ыец бер", z7); if (zd == 8 && _dc != DeclensionCase.Instrumental) { res = (zb > 15 || InStr("жий ний", z7) > 0) ? "е" : "о"; } else if (word == "лев") { res = "ьв"; } else { if (InStr("аеёийоуыэюя", Mid(word, z5 - 3, 1)) == 0 && (zb > 11 || zb == 0) && ze != 61) { res = ""; } else if (za == 7) { res = "л"; } else if (za == 10) { res = "к"; } else if (za == 13) { res = "йц"; } else if (ze == 0) { res = ""; } else if (ze == 13) { res = "е"; } else if (ze < 16) { res = "ь" + (ze == 1 ? "ц" : (ze == 5 ? "к" : "")); } else if (ze < 53) { res = "ц"; } else if (ze < 65) { res = "йц"; } else { res = "р"; } } if (zd == 9 || ((part == 3) && (Right(word, 1) == "ы"))) { res = word; } else { StringBuilder temp = new StringBuilder(128); temp.Append("а у а "); if ((z8 == "ич" && !fomitch(word)) || (z8 == "ыш")) { temp.Append("е"); } else if ((z8 == "ов") || (z8 == "ев" && part == 1) || (z8 == "ин" && part != 2)) { temp.Append("ы"); } else { temp.Append("о"); } temp.Append("ме "); temp.Append(InStr("гжкхш", Left(z8, 1)) > 0 ? "и" : "ы"); temp.Append(" е у "); temp.Append(z8 == "ца" ? "е" : "о"); temp.Append("йе я ю я ем"); temp.Append(za == 16 ? "и" : "е"); temp.Append(" и е ю ейе и и ь ьюи и и ю ейи ойойу ойойойойуюойойгомуго"); temp.Append((res == "е") || (za == 16) || ((zb > 12) && (zb < 16)) ? "и" : "ы"); temp.Append("мм"); string template = temp.ToString(); res = Left(word, z5 - ((zd > 6) || (!string.IsNullOrEmpty(res)) ? 2 : (zd > 0 ? 1 : 0))) + res + RTrim(Mid(template, 10 * zd + 2 * (int)_dc - 3, 2)); } return(string.IsNullOrEmpty(word) ? "" : (part > 0 ? UCase(Left(res, 1)) + ((declCase < 0) && (part > 1) ? "." : Mid(res, 2)) : res) + z6); }
public static string MorphAdjective(String adjective, DeclensionCase c, Number q, DeclensionGender g) { if (((adjective != null) ? adjective.Length : 0) < 4) { throw new Exception(SWordTooShort); } char e2 = adjective[adjective.Length - 1]; char e = adjective[adjective.Length - 2]; string _base; bool soft; if (e == 'ы' && e2 == 'й') { _base = adjective.Substring(0, adjective.Length - 2); soft = false; } else { if (e == 'и' && e2 == 'й') { _base = adjective.Substring(0, adjective.Length - 2); soft = true; } else { if (e == 'о' && e2 == 'й') { _base = adjective.Substring(0, adjective.Length - 2); soft = true; } else { if (e == 'а' && e2 == 'я') { _base = adjective.Substring(0, adjective.Length - 2); soft = false; } else { if (e == 'я' && e2 == 'я') { _base = adjective.Substring(0, adjective.Length - 2); soft = true; } else { if (e == 'о' && e2 == 'е') { _base = adjective.Substring(0, adjective.Length - 2); soft = false; } else { if (e == 'е' && e2 == 'е') { _base = adjective.Substring(0, adjective.Length - 2); soft = true; } else { if (!isConsonant(e)) { return(adjective); } _base = adjective; soft = false; } } } } } } } if (((_base != null) ? _base.Length : 0) < 2) { throw new Exception(SBaseTooShort); } string ending = AdjectiveEndings[(int)g - 1, (int)(soft ? 1 : 0), (int)q - 1, (int)c - 1]; return(_base + ending); }
public static string MorphNoun(string noun, DeclensionCase ncase, Number num, DeclensionGender gender, bool animate, bool endingstressed) { if (((noun != null) ? noun.Length : 0) < 2) { throw new Exception(SWordTooShort); } char e = noun[noun.Length - 1]; string _base; bool jot; Declension decl; bool soft; string result; switch (e) { case 'а': _base = noun.Substring(0, noun.Length - 1); jot = false; decl = Declension.d1; soft = false; break; case 'я': _base = noun.Substring(0, noun.Length - 1); jot = (isVowel(endof(_base)) || endof(_base) == 'ь'); decl = Declension.d1; soft = true; break; case 'о': _base = noun.Substring(0, noun.Length - 1); jot = false; decl = Declension.d3; soft = false; break; case 'е': case 'ё': _base = noun.Substring(0, noun.Length - 1); jot = (isVowel(endof(_base)) || endof(_base) == 'ь'); decl = Declension.d3; soft = true; break; case 'й': _base = noun.Substring(0, noun.Length - 1); jot = true; decl = Declension.d2; soft = true; break; case 'ь': _base = noun.Substring(0, noun.Length - 1); jot = false; decl = Declension.d4; soft = false; break; default: if (isConsonant(e)) { _base = noun; jot = false; decl = Declension.d2; soft = false; } else { result = noun; return(result); } break; } if (((_base != null) ? _base.Length : 0) < 2) { throw new Exception(SBaseTooShort); } if (animate && ncase == DeclensionCase.Accusative && ((decl == Declension.d1 && num == Number.nPlural) || decl == Declension.d2)) { ncase = DeclensionCase.Genitive; } string ending = NounEndings[(int)decl - 1, (soft ? 1 : 0), (int)num - 1, (int)ncase - 1]; if (gender == DeclensionGender.Neutral && num == Number.nPlural && ncase == DeclensionCase.Genitive) { ending = ""; } if (num == Number.nSingle && ncase == DeclensionCase.Prepositional && jot && endof(_base) == 'и') { ending = "и"; } if (ends_in_one_of(_base, mixedconsonants) && ending.CompareTo("ы") == 0) { ending = "и"; } if (decl == Declension.d1) { if (((ending != null) ? ending.Length : 0) == 0 & jot) { _base += "й"; } if (num == Number.nSingle) { if (ncase == DeclensionCase.Instrumental) { if (ends_in_one_of(_base, "жшщчц")) { if (endingstressed) { ending = "ой"; } else { ending = "ей"; } } else { if (soft & endingstressed) { ending = "ёй"; } } } if ((ncase == DeclensionCase.Dative & jot) && endof(_base) == 'и') { ending = "и"; } } else { if (ncase == DeclensionCase.Genitive) { if (_base[((_base != null) ? _base.Length : 0) - 1] == 'ь') { _base = _base.Substring(0, _base.Length - 1) + _base.Substring(_base.Length); } char c2 = _base[((_base != null) ? _base.Length : 0) - 1 - 1]; char c3 = _base[((_base != null) ? _base.Length : 0) - 1]; bool harden = false; if ((isConsonant(c2) || c2 == 'ь') && isConsonant(c3)) { char vowel = '\0'; if (_base.CompareTo("кочерг") == 0) { vowel = 'ё'; } else { if (soft) { if (jot & endingstressed) { vowel = 'е'; } else { vowel = 'и'; } if (c3 == 'н') { harden = (_base.CompareTo("барышн") != 0 && _base.CompareTo("боярышн") != 0 && _base.CompareTo("деревн") != 0); } } else { if (c2 == 'ь') { vowel = 'е'; } else { if (c3 == 'к') { if (c2 == 'й') { vowel = 'е'; } else { vowel = 'о'; } } } } } if (vowel != '\0') { if (c2 == 'ь' || c2 == 'й') { StringBuilder sb = new StringBuilder(_base); sb[_base.Length - 2] = vowel; _base = sb.ToString(); } else { StringBuilder sb = new StringBuilder(_base); sb.Insert(_base.Length - 1, vowel); _base = sb.ToString(); } } } if (soft && !jot && !harden) { _base += "ь"; } } } } else { if (decl == Declension.d2) { if (ncase == DeclensionCase.Accusative) { ncase = DeclensionCase.Nominative; } if (num == Number.nSingle && ncase == DeclensionCase.Nominative) { if (e == 'е') { ending = "е"; } if (e == 'о') { ending = "о"; } } if (((ending != null) ? ending.Length : 0) == 0 & jot) { _base += "й"; } if (gender == DeclensionGender.Neutral && num == Number.nPlural && ncase == DeclensionCase.Nominative) { if (soft) { ending = "я"; } else { ending = "а"; } } } } result = _base + ending; return(result); }
public string GetApproimentDeclension(string approiment, DeclensionCase declensionCase) { lock (_locker) return(BLL.Declension.DeclensionBLL.GetAppointmentDeclension(approiment, (BLL.Declension.DeclensionCase)(int) declensionCase)); }
//_____________________________________________________________________________ // z1 - фамилия имя отчество например Железняков Юрий Юрьевич // z2 - Падеж ( по умолчанию = 2 - родительный) // 2 - родительный ( нет кого? ) Железнякова Юрия Юрьевича // 3 - дательный ( кому? ) Железнякову Юрию Юрьевичу // 4 - винительный ( вижу кого? ) Железнякова Юрия Юрьевича // 5 - творительный ( кем? ) Железняковым Юрием Юрьевичем // 6 - предложный ( о ком? ) Железнякове Юрии Юрьевиче // Если задать Z2 меньше 0, то на выходе получим от -1=Железняков Ю. Ю. до -6=Железнякове Ю. Ю. // z3 - параметр Пол может не указываться, но при наличии фамилий с // инициалами точное определение пола невозможно, поэтому предлагается задавать пол этим // параметром 1 - мужской 2 - женский // ДЛЯ СКЛОНЕНИЯ ПРОФЕССИЙ ИСПОЛЬЗУЙТЕ ФУНКЦИЮ ПАДЕЖП И БУДЕТ ВАМ СЧАСТЬЕ! // --------------------------------------------------------------------------------------- // Бибик Галушка Цой Николайчик Наталия Петровна Герценберг Кривошей Капица-Метелица // Если Падеж(Фио ,1 ,3), то на выходе получим Фамилия Имя Отчество и т.д. // Если Падеж(Фио ,1 ,3,"1" ), то Фамилия // Если Падеж(Фио ,1 ,3,"2" ), то Имя // Если Падеж(Фио ,1 ,3,"3" ), то Отчество // Если Падеж(Фио, 1 ,3,"12" ), то Фамилия Имя // Если Падеж(Фио, 1 ,3,"23" ), то Имя Отчество // Если Падеж(Фио,-1 ,3,"231" ),то И. О. Фамилия // Если Падеж(Фио,-1 ,3,"23" ), то И. О. // 10-11-2003 3-20 public static string GetDeclension(string FIO, DeclensionCase declensionCase) { return(GetDeclension(FIO, declensionCase, DeclensionGender.NotDefind, "123", 1)); }
public string GetPersonNameDeclension(string FIO, DeclensionCase declensionCase, DeclensionGender gender, string part, int z5) { throw new NotImplementedException(); }
public FilterAttribute(FilterType type, DeclensionCase declensionCase) : this(type) { Declension = declensionCase; }
public DeclensionAttribute(DeclensionCase declensionCase) { Declension = declensionCase; }
public string GetApproimentDeclension(string approiment, DeclensionCase declensionCase) { throw new NotImplementedException(); }