C# ile Türkçe Metni Hecelere Ayırma

C Sharp ile metni Türkçe dil kurallarına göre hecelere ayırmak için daha önce VB.Net dilinde yazılmış bir algoritmayı C# diline çevirerek kullanmıştım. İşime bayağı da yaramıştı. Sizlere de yararlı olması düşüncesiyle paylaşıyorum.

      public string HecelereAyir(string cumle)
        {
            const string sesliHarfler = "aeıioöuüAEIİOÖUÜ";
            const string sessizHarfler = "bçdfgğhjklmnprsştvyzBÇDFGĞHJKLMNPRSŞTVYZ";
            const string karakterler = ("., ;\'!?\"");
            cumle = (cumle + " ");
            string hecele = "";
            int a = 1;

            baslangic:

            for (int i = a; (i <= cumle.Length); i++)
            {
                //Önce karakterleri kontrol et. Eğer boşluk varsa döngüyü tekrar çalıştır
                if (((karakterler.IndexOf(cumle.Substring((i - 1), 1), 0) + 1) > 0))
                {
                    // boşluk ise direkt başa dön 
                    hecele = (hecele + cumle.Substring((a - 1), 1));
                    a++;
                    goto baslangic;
                }

                if (((sessizHarfler.IndexOf(cumle.Substring((i - 1), 1), 0) + 1) > 0))
                {
                    // ilk harf sessiz 
                    if (((sesliHarfler.IndexOf(cumle.Substring(i, 1), 0) + 1) > 0))
                    {
                        // ikinci harf sesli 
                        if (((sessizHarfler.IndexOf(cumle.Substring((i + 1), 1), 0) + 1) > 0))
                        {
                            // Üçüncü harf sessiz 
                            if (((sesliHarfler.IndexOf(cumle.Substring((i + 2), 1), 0) + 1) > 0))
                            {
                                // dördüncü  harf sesli ise ilk iki harf hecedir. 
                                hecele = (hecele + (cumle.Substring((a - 1), 2) + "-"));
                                a += 2;
                                goto baslangic;
                            }

                            if (((sessizHarfler.IndexOf(cumle.Substring((i + 2), 1), 0) + 1) > 0))
                            {
                                // dördüncü harf te sessiz 
                                if (((sesliHarfler.IndexOf(cumle.Substring((i + 3), 1), 0) + 1) > 0))
                                {
                                    // 5.harf sesli ise ilk 3 harf hecedir. 
                                    hecele = (hecele + (cumle.Substring((a - 1), 3) + "-"));
                                    a += 3;
                                    goto baslangic;
                                }

                                if (((sessizHarfler.IndexOf(cumle.Substring((i + 3), 1), 0) + 1) > 0))
                                {
                                    // 5.harf sessiz ise ilk 4 harf hecedir. 
                                    hecele = (hecele + (cumle.Substring((a - 1), 4) + "-"));
                                    a += 4;
                                    goto baslangic;
                                }
                            }
                        }

                        if (((sesliHarfler.IndexOf(cumle.Substring((i + 1), 1), 0) + 1) > 0))
                        {
                            // Üçüncü harf sesli ise ilk iki harf hecedir. 
                            hecele = (hecele + (cumle.Substring((a - 1), 2) + "-"));
                            a += 2;
                            goto baslangic;
                        }
                    }

                    if (((sessizHarfler.IndexOf(cumle.Substring(i, 1), 0) + 1) > 0))
                    {
                        // ikinci de sessiz ise ilk 4 harf hecedir. 
                        hecele = (hecele + (cumle.Substring((a - 1), 4) + "-"));
                        a += 4;
                        goto baslangic;
                    }
                }

                if (((sesliHarfler.IndexOf(cumle.Substring((i - 1), 1), 0) + 1) > 0))
                {
                    // ilk harf sesli 
                    if (((sessizHarfler.IndexOf(cumle.Substring(i, 1), 0) + 1) > 0))
                    {
                        // ikinci harf sessiz 
                        if (((sessizHarfler.IndexOf(cumle.Substring((i + 1), 1), 0) + 1) > 0))
                        {
                            // Üçüncü harf sessiz. 
                            if (((sesliHarfler.IndexOf(cumle.Substring((i + 2), 1), 0) + 1) > 0))
                            {
                                // Dördüncü harf sesli ise ilk iki harf hecedir. 
                                hecele = (hecele + (cumle.Substring((a - 1), 2) + "-"));
                                a += 2;
                                //      goto baslangic;
                            }

                            if (((sessizHarfler.IndexOf(cumle.Substring((i + 2), 1), 0) + 1) > 0))
                            {
                                // dördüncü harf te sessiz ise ilk üç harf hecedir. 
                                hecele = (hecele + (cumle.Substring((a - 1), 3) + "-"));
                                a += 3;
                                goto baslangic;
                            }
                        }

                        if (((sesliHarfler.IndexOf(cumle.Substring((i + 1), 1), 0) + 1) > 0))
                        {
                            // Üçüncü harf sesli.Bu durumda ilk harf hece demektir. 
                            hecele = (hecele + (cumle.Substring((a - 1), 1) + "-"));
                            a++;
                            goto baslangic;
                        }
                    }
                }
            }
            return hecele;
        }

Kullanımı :

 textBox2.Text = HecelereAyir(textBox1.Text);

Kolay gelsin...

Visual Studio Tema Editörü Yükleme (Color Theme Editor) Önceki Yazı

Visual Studio Tema Editörü Yükleme (Color Theme Editor)

GoDaddy'de Plesk Panel Üzerinde Ücretsiz SSL Sertifikası Kurulumu Nasıl Yapılır? Sonraki Yazı

GoDaddy'de Plesk Panel Üzerinde Ücretsiz SSL Sertifikası Kurulumu Nasıl Yapılır?

Yorum/Soru Yazın