Uzun zamandır yazılım geliştirmeyle ilgili pek birşeyler yazmamıştım. Artık bu gidişe bir “Dur!” demenin vakti geldi diye düşünüyorum: “-Dur!”
Bu yazımda sizinle yazılım geliştiricilerinin kanayan bir yarası olan, yazının içinde geçen ismin sonuna gelecek eklerin uyuşmaması konusundan yola çıkarak, özel isimleri ekrana yazarken bunların sonuna gelecek ekleri elde edebileceğimiz methodlar paylaşacağım.
En sık karşılaşılan durum aşağıda görüldüğü gibidir:
“Ahmet’i listenize eklediniz.” “Arzu’i listenize eklediniz.” “Akın’i listenize eklediniz.”
Gönül ister ki bunlar: “Arzu’yu listenize eklediniz.” “Akın’ı listenize eklediniz.” şeklinde olsun.
Bildiğiniz gibi bu ekler aslında Türkçe’de sıkça karşılaştığımız ismin halleri ve aitlik ekleridir. Örn:”Akın’ın profiline bak” gibi.
İsmin 5 hali vardır: Yalın hali, -i hali, -e hali, -de hali, -den hali. Bu ekler kelimenin bitişine ve kelimedeki sesli harfe göre ses değişimine uğramaktadırlar. Bu yüzden öncelikli olarak kelimedeki en son sesli harfin hangisi olduğunu öğrenmemiz gerekiyor.
Lafı fazla uzatmaya gerek yok, yazının devamında ilgili metodları ve bu metodlar kullanılarak yapılmış bir konsol uygulama örneği bulabilirsiniz. Emeğe saygı falan bunlara gerek yok, alın kullanın, kendi adınızı yazın altına, hiç gocunmam, helali hoş olsun… 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | // Özel İsimlerin Halleri // by Bahadir Almaci // http://bahadir.almaci.com using System; using System.Linq; namespace IsminHalleri { class Haller { static readonly string[] sesli = { "a", "ı", "o", "u", "e", "i", "ö", "ü" }; public static int SonSesliHarfIndex(string kelime1) { string kelime = kelime1.ToLower(); for (var i = kelime.Length - 1; i >= 0; i--) { var i1 = i; if (sesli.Where(c => c == kelime.Substring(i1, 1)).Count() > 0) return i; } return -1; } public static string AitlikEki(string isim1) { string isim = isim1.ToLower(); int index = SonSesliHarfIndex(isim); string ek = ""; if (index > -1) { string harf = isim.Substring(index, 1); if (index == isim.Length - 1) ek += "n"; if (harf == "a" || harf == "ı") ek += "ı"; else if (harf == "e" || harf == "i") ek += "i"; else if (harf == "o" || harf == "u") ek += "u"; else if (harf == "ö" || harf == "ü") ek += "ü"; } else ek = "i"; return ek + "n"; } public static string IsminEHaliEki(string isim1) { string isim = isim1.ToLower(); int index = SonSesliHarfIndex(isim); string ek = ""; if (index > -1) { string harf = isim.Substring(index, 1); if (index == isim.Length - 1) ek += "y"; if (harf == "a" || harf == "ı") ek += "a"; else if (harf == "e" || harf == "i") ek += "e"; else if (harf == "o" || harf == "u") ek += "a"; else if (harf == "ö" || harf == "ü") ek += "e"; } else ek = "ye"; return ek; } public static string IsminIHaliEki(string isim1) { string isim = isim1.ToLower(); int index = SonSesliHarfIndex(isim); string ek = ""; if (index > -1) { string harf = isim.Substring(index, 1); if (index == isim.Length - 1) ek += "y"; if (harf == "a" || harf == "ı") ek += "ı"; else if (harf == "e" || harf == "i") ek += "i"; else if (harf == "o" || harf == "u") ek += "u"; else if (harf == "ö" || harf == "ü") ek += "ü"; } else ek = "yi"; return ek; } public static string IsminDeHaliEki(string isim1) { string isim = isim1.ToLower(); int index = SonSesliHarfIndex(isim); string ek = ""; if (index > -1) { string harf = isim.Substring(index, 1); if (harf == "a" || harf == "ı" || harf == "o" || harf == "u") ek += "da"; else if (harf == "e" || harf == "i" || harf == "ö" || harf == "ü") ek += "de"; } else ek = "de"; return ek; } public static string IsminDeHaliEki(string isim1, bool ozel) { string isim = isim1.ToLower(); int index = SonSesliHarfIndex(isim); string ek = ""; if (index > -1) { string harf = isim.Substring(index, 1); if (harf == "a" || harf == "ı" || harf == "o" || harf == "u") ek += "da"; else if (harf == "e" || harf == "i" || harf == "ö" || harf == "ü") ek += "de"; } else ek = "de"; return ek; } public static string IsminDenHaliEki(string isim1) { string isim = isim1.ToLower(); int index = SonSesliHarfIndex(isim); string ek = ""; if (index > -1) { string harf = isim.Substring(index, 1); if (harf == "a" || harf == "ı" || harf == "o" || harf == "u") ek += "dan"; else if (harf == "e" || harf == "i" || harf == "ö" || harf == "ü") ek += "den"; } else ek = "den"; return ek; } } class Program { static void Main() { const string isim = "Akın"; Console.WriteLine("{0}'{1} fotoğraflarını gör", isim, Haller.AitlikEki(isim)); Console.WriteLine("{0}'{1} mesaj gönder", isim, Haller.IsminEHaliEki(isim)); Console.WriteLine("{0}'{1} dürt", isim, Haller.IsminIHaliEki(isim)); Console.WriteLine("{0}'{1} tavsiye iste", isim, Haller.IsminDenHaliEki(isim)); Console.WriteLine("Kitabım {0}'{1} kaldı", isim, Haller.IsminDeHaliEki(isim)); Console.WriteLine("\n"); const string isim2 = "Ayşe"; Console.WriteLine("{0}'{1} fotoğraflarını gör", isim2, Haller.AitlikEki(isim2)); Console.WriteLine("{0}'{1} mesaj gönder", isim2, Haller.IsminEHaliEki(isim2)); Console.WriteLine("{0}'{1} dürt", isim2, Haller.IsminIHaliEki(isim2)); Console.WriteLine("{0}'{1} tavsiye iste", isim2, Haller.IsminDenHaliEki(isim2)); Console.WriteLine("Kitabım {0}'{1} kaldı", isim2, Haller.IsminDeHaliEki(isim2)); } } } |
Programı çalıştırdığımızda çıktısı aşağıdaki gibi olacaktır.
mükemmel.. web de bi tek bu yazıyı gordum konu hakkında.. tebrik ederim. beni büyük bir uğraştan kurtardın.. teşekkürler, başarılar Bahadır.
Elinize sağlık, çok güzel bir paylaşım olmuş. Teşekkürler.