Umut D.

Umut D.

Powered by Jekyll & Github

  • Coding-Challenges

  • Soru

    Programcıya, içerisinde ! ve [ veya ] karakterleri de içeren bir metin veriliyor. Bu noktadan sonra programcıdan; verilen metni parçalaması, fakat köşeli parantez olan alanları da olduğu gibi, yani kalıp halinde diziye aktarması isteniyor.

    Örnek

    Girdi Çıktı
    girilenMetin: !ben [bir ceviz] agaciyim [gülhane parkında] Sonuç: “ben”, “[bir ceviz]”, “agaciyim”, “[gülhane parkında]”
    girilenMetin: [Mekanın sahibi geri geldi] !bebeleri pistten !alalim Sonuç: “[Mekanın sahibi geri geldi]”, “!bebeleri”, “pistten”, “!alalim”

    Çözüm - C#

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;
    
    class Program
    {
        static void Main()
        {
            string girilenMetin = "[Mekanın sahibi geri geldi] !bebeleri pistten !alalim";
            List<string> yazilar = new List<string>();
    
            // Girilen metni hem köşeli parantezlere hem de kelimelere (ünlem dahil) bölerek diziye aktar
            foreach (Match eslesme in Regex.Matches(girilenMetin, @"\[(.*?)\]|[!a-zA-z]*"))
            {
                yazilar.Add(eslesme.ToString());
            }
    
            // Diziye aktarma sonrarı boşluklar oluşursa, boş olan dizileri yok et
            foreach (string yazi in yazilar.Where(x => !string.IsNullOrEmpty(x)).ToArray())
            {
                Console.WriteLine(yazi);
            }
    
            Console.Read();
        }
    }