
Bu dersimizde string işlemelerinde Console ekranında girdiğiniz değerin sayısal olup olmadığını sayısal olması halinde sayısal dönüşüm nasıl yapılacağını öğreneceğiz. Burada kullanılacak komutların gerçek console ekranında ve diğer işlemlerde program geliştirecek kişilere yardımcı olabilecek niteliktedir. Kullanıcı ara yüzüne her zaman sayısal değer girmemesi nedeniyle, programcı kodladığı programın her türlü giriş yapılan değere karşı kodlamasını düzenlemesi lazım. Bu sebeplerden dolayı bazı metotlar ve komutlar kullanmanız sizin yazacağınız programın işleyişi açısından yararlı yararlı olacaktır. Çünkü kullanıcı bug sevmez ve bug bulunan bir programın rekabeti sorgulanır.
IsNullOrEmpy Metodu Nedir? Nasıl Uygulanır?
Bu metot bir string değerinin içinin boş olduğunu ya da boş bile olmadığını sorgulayan metottur. Aşağıdaki kod parçacığını inceleyecek olursak ki daha anlaşılır hal alacaktır.
1 2 |
string a; // Null olarak ele alınır.Veya a=null; yazarsınız farkı yoktur. string b=""; // Empty olarak ele alınır |
1 2 3 4 5 6 |
Console.WriteLine("bir string giriniz: "); string b = Console.ReadLine(); if (String.IsNullOrEmpty(b)) { Console.WriteLine("boş"); } |
Aslında eğer ki mantıksal operatörleri bilirseniz bu metoda ihtiyacınız olmadan da yazabilirsiniz. Aşağıdaki gibi mantıksal operatörler ile yapılabilir niteliktedir. Bize verdiği cevap boolean tipinde bir cevap olduğundan, yani kod kısaca “atanma yapılmış veya boş mu?” diye soru sorar cevap olarak da evet ya da hayır cevabı program kararı ve verilerle verilir.
1 |
String.IsNullOrEmpty(b) |
1 |
(b == null||b == "") |
Bu sebepten ötürü kodu biz şartlı ifadelerde ve döngülerde kullanabilmemiz mümkündür.
Kısaca bir örnek yapacak olursak;
1 2 3 4 5 6 7 8 9 10 11 |
string a=null; // Null değer atadık . Console.WriteLine("bir string giriniz: "); string b = Console.ReadLine(); //Enter tuşuna basacak olursanız b değerinin içi Empty yani boş olacaktır. if (String.IsNullOrEmpty(b)==true) // Burada içeriğini açıkladığımız operatörü kullanabiliyoruz. { Console.WriteLine("boş"); // Entera basmanız durumunda burada içeriğinin boş olduğunu söyleyecek. } if (a == null || a == "") // Burada da aynı operatörün lojik operatörler yardımıyla elde ettik. { Console.WriteLine("Null"); // Başta biz a değerini null bellirtiğimiz için Null cevabı verecektir. } |
şeklinde olur. Kod parçacığının içinde açıklama yapmamın sebebi etkili olduğunun düşündüğümdendir. Çünkü bazı şeyler göz önünde olduğunda anlaşılırlığı daha kolaydır.
IsNullOrWhiteSpace Metodu Nedir? Nasıl Kullanılır?
Bu operatörde ise string değerinin içerisinde boşluk veya null(atanmayan) veya hiçbir şey bulunmayan bir değer olması durumunda boolean türünde cevap vermesidir. Yani diğer metoda ek olarak boşluk varsa ekstradan var diyebilir. Şifreleme tekniklerinde bunu kullanabilmeniz mümkündür.
1 |
String.IsNullOrWhiteSpace(b) |
1 |
(b == null||b == ""||b==" ") |
Trim Metodu Nedir? Nasıl Kullanılır?
Belirli bir string değerin sağ ve sol taraftan boşluk değerlerini kesmemize yarar. Şöyle ki kullanıcı adını giren birinin sağ ve solda boşluk unutması sebebiyle kullanıcı adını sistem yanlış kaydedebilir bu sebeple bu trim metodu işinizi her zaman kolaylaştıracaktır.
Kullanımı çok basit, bir string değer belirlediğinizde yeni bir string değere atayabilir ya da kendisine eşitleyebilirsiniz. Trim aynı zamanda iki taraftan uygulanabildiği gibi başlangıç ve bitişte de uygulanabilir. Trimend son kısımdaki boşlukları keser, TrimStart başlangıç kısmında olan boşlukları keser.
a=a.Trim();
Örnek ile göstermemiz gerekirse…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
string a=null; while (true) { if (a == "exit") { break; } Console.WriteLine("boşluklu bir kelime giriniz"); a = Console.ReadLine(); string b = a.TrimStart(); string c = a.TrimEnd(); string d = a.Trim(); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d); } |
Sayısal Dönüşüm Tekniği
Girilen bir string değerin sayısal bir veri tipi olup olmadığını kontrol etmemiz gerekir çünkü sayısal değer cinsinden anlamsız olan karakterlerin işimize yarar tarafı olmayacaktır. Örneğin elma bir sayısal değer değildir, ama 1 elma dediğiniz vakit 1 sayısal bir anlam taşır. Onun için 1 in ayrılması gerekir. Tabi kullandığınız algoritmaya göre değişiklik gösterir he uygulama. Bu sebeplerden ötürü sayısal değerler bizim için girilen sayısal değerlerin anlamlandırılması önemlidir. Ve önemsenmediği taktirde uygulama algılamaz bug verecektir.
Char.IsDigit Metodu
Dışarıdan aldığımız bir girdi string değer olduğundan bunu sayısal ifade türüne dönüştürmemiz gerekir. Tabi sayısal olarak işlem yapacak iseniz o zaman o ifade içerisindeki dönüşümü bu şekilde sağlamanız gerekir. Yoksa koşul ve dizinleyerek de o ifade üzerinden farklı algoritmalar yaratabilirsiniz.
Daha önceki derslerimizde bundan bahsetmedik, çünkü string işlemlerinde bahsetmeyi daha doğru buldum.
Daha önce yapmış olduğumuz işlemlerde sayısal ifadeler istiyorduk, fakat sayısal bir ifade girmediğimiz zaman program hata verebiliyordu.
1 2 3 4 |
Console.WriteLine("Sayısal bir ifade giriniz"); string girilen = Console.ReadLine(); int sayı = int.Parse(girilen); |
Burada bizim yaptığımız yanlış şuydu verilen her ifadeyi int değerine dönüştürmeye zorluyorduk. Girilen karakterlerin sayısal olmadığı durumda bu “dönüştürmeye zorlama” çalışmaz. İfadeyi bunu yapma yerine şarta bağlarsak, yani herhangi bir karakterini seçip sayı olup olmadığını denetler isek bu hata ile karşılaşmadan işlemi başa alabilir veya programın akışını sonlandırabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
string girilen; Console.WriteLine("Sayısal bir ifade giriniz"); girilen = Console.ReadLine(); while (Char.IsDigit(girilen,0)!=true) { Console.WriteLine("Lütfen sayısal ifade giriniz"); girilen = Console.ReadLine(); } var b = Char.IsDigit(girilen, 0); int sayı = int.Parse(girilen); Console.WriteLine(girilen); Console.WriteLine(b); |
Dikkat eder iseniz çok basit bir dokunuşla programın takılı kalmasını önleyebiliyoruz. Sayısal dönüşüm bir programın ana mantığını oluşturur.
Tabi bu anlattığım metotlar sadece bir kaçı snippetlarda görebileceğiniz gibi bir sürü operatör bulunmaktadır. İstediğiniz zaman bakıp başka bir şekilde işlemlerinizi gerçekleştirmeniz mümkün. Tabi akılınıza takılan herhangi bir durumu sayfanın alt kısmındaki yorum kısmında belirtebilir ve bana iletebilirsiniz.
İlginizi için teşekkürler ve kolaylıklar dilerim.