String Builder Sınıfı

String Builder Sınıfı

String Builder Sınıfı

Bu yazımızda String Builder sınıfı ve kullanım yerlerinden bahsedeceğiz.

Kodlarımızda en sık kullandığımız nesnelerden birisi olan String nesnesi immutable (değiştirilemez) bir nesnedir. Immutable olması nedeniyle üzerinde bir değişiklik işlemi (örneğin string birleştirme) yaptığımızda nesne yeniden oluşturulur ve bellekten yeniden yer ayrılır.  Eğer bir kaç defa bu işlemi yapacaksak çok sorun teşkil etmez ancak bir döngü içerisinde çok fazla sayıda string üzerinde işlem yapmamız gerekli ise bu çok fazla yük getirecektir. İşte bu noktada String Builder sınıfı devreye girmekte ve performansı artırmak için kullanılmaktadır.

System.Text NameSpace’inde bulunan String Builder Sınıfı bize oluşturuduğumuz nesne üzerinde yeni bir nesne oluşturmadan değişiklik yapma imkanı sunar. Bu özelliği ile string üzerinde çok sayıda değişiklik yaptığımız uygulamalarda yüksek performans sağlar. Ayrıca oluşturacağımız stringin büyüklüğünü de başlangıçta belirleyebiliriz.

Şimdide örnekler üzerinde constructor ve methotlarının kullanımı görelim:

StringBuilder sBuilder = new StringBuilder("Default Constructor");
StringBuilder sBuilder = new StringBuilder("Sınırlı Kapasite", 100);

sBuilder.Append("string ekle");
sBuilder.AppendLine(); //Yeni Satır ekle
sBuilder.AppendLine("Yeni satır ve string ekle");

sBuilder.Replace("A", "B"); //A harflerini B ile değiştir
sBuilder.Insert(15,"beni 15. karakterden sonra ekle" );

? Operatörü ile İf Else Kontrolü

? operatörü ile İf-Else Kontrolü
Yaptığımız durum kontrollerinde tek bir veri veya işlem sonucunu döndürmek istediğimizde ? operatörü‘nü kullanabiliriz.

? operatörü, veri kalabalığını ve satır sayısını azaltan oldukça kullanışlı bir operatör.

Kullanımı da oldukça basit. Soru işareti öncesi koşulumuz sağlanıyorsa, soru işaretinden sonraki ilk değer değilse ikinci değer döndürülüyor.

Aynı durumu if-else kontrolü ve ? operatörü ile karşılaştırıp farkı görelim.

 

int sayi = Convert.ToInt32(Console.ReadLine());
string durum;

// if-else kontrolü.
if (sayi%2 == 0)
durum= "çift";
else
durum= "tek";

// ? operatörü
durum= (sayi%2 == 0) ? "çift" : "tek";

C# Methoddan 2’li Veri Döndürme

Anahtar-Değer

Anahtar-Değer

C# Methodlarımız tanım olarak tek tipte veri döndürmemize izin veriyor. Birden fazla değer veri döndürmek istediğimizde kullanabileceğimiz farklı yöntemler mevcut.

Bu yazımda Anahtar – Değer olarak ikili verileri döndürülmesinden bahsedeceğim.

İkili veriler Dictionary gibi bir çok yerde kullanılmakta. Temel mantık olarak her anahtar için bir değer atıyoruz.  Bu şekilde bir ikili değeri methodumuzdan döndürmek istediğimizde KeyValuePair değişkeni olarak döndürmek  mümkün.

Aşağıdaki örnekte bir ikiliyi nasıl döndürdüğümüzü göreceksiniz.

public KeyValuePair<string, int> MeyveKilo()
{
return new KeyValuePair<string,int>("elma",5);
}


Sonuç değerlere erişmek için .key ve .value özelliklerini kullanıyoruz.

Asp.Net ile Metinden URL Oluşturma

metinden url oluşturmaSeo açısından URL içerisinde geçen keyword‘lerin ne kadar değerli olduğunu biliyoruz. Bu yüzden bazen elimizdeki metinden otomatik olarak URL oluşturmamız gerekebilir.

Seo açısından URL’lerimiz 75 karakteri geçmemeli ve Türkce karakter bulundurmamalıdır. Buna ek olarak kelimeler birbirinden “-” karakteri ile ayrılmalıdır. Tüm bu seo kurallarına uyarak metni URL’e çeviren methodu aşağıda bulabilirsiniz.

Method string olarak metni alıp yine string olarak url döndürmektedir.

private string urlYap(string data)
{
data = data.Replace(",", "").Replace("\"", "").Replace("'", "").Replace(":", "").Replace(";", "").Replace(".", "").Replace("!", "").Replace("?", "").Replace(")", "").Replace("(", " ").Replace("&", " ").Replace(" ", " ");if (data.Length > 75)
{
data = data.Substring(0, 75);
data = data.Substring(0, data.LastIndexOf(" "));
}

data= data.Replace(" ", "-").ToLower();
return data.Replace("ş", "s").Replace("Ş", "s").Replace("ç", "c").Replace("Ç", "c").Replace("ö", "o").Replace("Ö", "o").Replace("ü", "u").Replace("Ü", "u").Replace("İ", "i").Replace("ı", "i").Replace("ğ", "g").Replace("Ğ", "g");
}

C# Text İçindeki Kelimelerin İlk Harfini Büyütmek

Başlık Kalimelerin İlk Harfini Büyük YapmakElimizdeki işlenmemiş metindeki kelimelerin ilk harflerini büyük yapmamız gerekebiliyor. Özellikle başlık gibi görsel olarak ön planda olcak metinlerde bu özellik çok kullanılıyor.  İlk harfleri büyütmeyi string sınıfı özellikleri ile halledebiliriz. Ancak bunun içinde bir method zaten mevcut. (System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase()).

Her seferinde bu kadar uzun yazmamak için kendi methodumuzun içine alalım.

    public string titleModu(string text)
    {
        return System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(text.ToLower());
    }

C# ile URL’den Dosya İndirme

c# ile dosya indirmeC# ile adresini bildiğimiz dosyaları sunucudan indirebiliyoruz.
Öncelikle  System.Net kütüphanemizi include etmemiz gerekli.
Sonrasında bir WebClient oluşturuyoruz. Bu WebClient ‘a indirilecek URL’i ve hangi adrese hangi isim ve uzantıda kaydetmek istediğimizi berlirtiyoruz.

Örneğin aşağıda bu yazının resmini indirmek için gerekli kod bulunmaktadır. Resim masaüstüne resim.jpg olarak kaydedilecektir. Tabi ki masaüstünün adresini kendi bilgisayarımızınki ile değiştirmeyi unutmayalım.

using System.Net;

WebClient webClient = new WebClient();
webClient.DownloadFile("https://webdeyim.files.wordpress.com/2013/08/c-indir.jpg","C:\Users\admin\desktop\resim.jpg");

Asp.Net İle Ziyaretçinin IP’sini Öğrenme

asp.net ile ziyaretçi ipsini öğrenmeSitemizde log tutuyorsak mutlaka gelen ziyaretçilerin ip adreslerini saklamalıyız. Asp.Net ile aşağıdaki methodu kullanarak sitemize gelen ziyaretçileri ip adreslerini saklayabiliriz.

public string IPogren()
{
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
string ipString = "";
if (string.IsNullOrEmpty(Request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
{
ipString = Request.ServerVariables["REMOTE_ADDR"];
}
else
{
ipString = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.FirstOrDefault();
}
return ipString;
}