Türkçe İsim Kullanımına Yönelik Metodlar – C#

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.
Çıktı

“Türkçe İsim Kullanımına Yönelik Metodlar – C#” üzerine 2 düşünce

  1. 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.

  2. Elinize sağlık, çok güzel bir paylaşım olmuş. Teşekkürler.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir