Bazen kayıtları veri tabanında belirli işaretlere göre tek bir alanda tutmak isteriz. Örn: hobileri virgüller ile ayırıp tutmak. Yada bir coğrafi konumun enlem ve boylam değerlerini özel semboller( virgül vb) ile ayırarak tutmak. Örnekleri uzatmak mümkün. Veri tabanındaki bu birleştirilmiş kayıtları program tarfında parçalamak için split metodu kullanılır. Split metodu bütün programlama dillerinde(java, php, python vs.) olan bir metotdur.
Split metodunun temel çalışma şekli şöyledir. Bir dizgeyi (karakter dizisi) belirli bir ayraç ile parçalayıp, parçalardan bir dizi döndürür.
Kullanım 1: C# string nesneleri ile kullanılır. Aşırı yüklenmiş bir metottur fakat en sık kullanım şekli ayırıcı olarak bir karakter(char) girilmesi ile yapılır.
Örnek:
1 2 3 4 |
char ayrac=' '; //char türünde her hangi bir sembole göre ayrılabilir metin.split(ayrac); |
Kullanım 2: C# split metodunun aşırı yüklenmiş bir metot olduğunu yazmıştım. Karakterlerden oluşan bir dizi ile birden fazla karakter ile de parçalamak mümkündür.
Örnek: 2018/05/03 14:50 şeklindeki tarihi parçalara ayırma
1 2 3 4 5 6 7 8 9 10 |
char[] ayrac = { '/', ' ', ':' }; string tarih = "2018/05/03 14:50"; string[] parcalar = tarih.Split(ayrac); Console.WriteLine("Yıl:{0} Ay:{1} Gün:{2} Saat:{3} Dakika:{4}", parcalar[0], parcalar[1], parcalar[2], parcalar[3], parcalar[4]); Console.ReadLine(); |
Örnek: Bir dizge içinde virgüller ile ayrılarak tutulan hobileri parçalayıp ekrana foreach döngüsü ile yazdırma
1 2 3 4 5 6 7 8 9 10 |
string hobiler = "Yüzme,Voleybol,Futbol,Kitap Okuma"; string[] hobiListe = hobiler.Split(','); //hobileri , ile ayırıp hobiListe içine aktarıyoruz. foreach (string hobi in hobiListe) { Console.WriteLine(hobi); } Console.ReadLine(); |
Örnek: Bir cümledeki kelimelerin sayısını bulma. C# ile cümleyi kelimelere ayırma işlemi için split metodunun ayraç değerini boşluk karakteri olarak ayarlarız.
1 2 3 4 5 6 7 |
string yazi = "Bugün hava çok güzel değil gibi görünüyor."; string[] kelimeler = yazi.Split(' '); Console.WriteLine(" Yazı toplam {0} kelimedir. ",kelimeler.Length); Console.ReadLine(); |