/// <summary> /// Verilen Türkçe ifade sonuna, verilen ismin hâlini uyumlu biçime sokar, tek tırnak"la birlikte ilave eder ve döner. /// </summary> /// <param name="govde">Türkçe ifade</param> /// <param name="hal">İsmin hâli</param> /// <returns>Tek tırnak sonrası hâl eki eklenmiş ifade.</returns> public static string Uygula(string govde, IsminHali hal) { GovdeBilgisi govdeBilgisi = new GovdeBilgisi(govde); var harfler = _haller[hal]; StringBuilder sb = new StringBuilder(govde); sb.Append("'"); foreach (var harf in harfler) { var c = harf.Bas(govdeBilgisi); if (c != char.MinValue) { sb.Append(c); } } return(sb.ToString()); }
/// <summary>Verilen Türkçe ismi istenen hale göre çekimler.</summary> /// <param name="govde">Türkçe isim</param> /// <param name="hal">İsmin hâli</param> /// <returns>Çekimlenmiş ifade.</returns> public static string Uygula(string govde, IsminHali hal) { GovdeBilgisi govdeBilgisi = new GovdeBilgisi(govde); var harfler = _haller[hal]; StringBuilder sb = new StringBuilder(govde); StringBuilder ek = new StringBuilder(); foreach (var harf in harfler) { var c = harf.Bas(govdeBilgisi); if (c != char.MinValue) { ek.Append(c); } } // Yumuşama kontrolü if (ek.ToString() != "") { if (govdeBilgisi.SertSessizIleBitiyor && Alfabe.Sesliler.Contains(ek[0])) { switch (govdeBilgisi.SonHarf) { case Alfabe.P: sb[sb.Length - 1] = Alfabe.B; break; case Alfabe.Ç: sb[sb.Length - 1] = Alfabe.C; break; case Alfabe.T: sb[sb.Length - 1] = Alfabe.D; break; case Alfabe.K: sb[sb.Length - 1] = Alfabe.Ğ; break; } } } return(sb.Append(ek).ToString()); }