Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

MCTS – Searching , Modifying and Encoding Text

3. Searching , Modifying and Encoding Text

Metinler üzerinde işlem yapmak yazılım geliştiricilerin çok sık yaptığı işler arasında yer alır.Bu yazıda düzensiz gelen bir metnin düzenli hale nasıl getirilebileceği üzerine çalıyor olacağız. Kısaca StringBuilder,Regex, Match , MatchCollection , Group , GroupCollection , Encoding , Decoding ve Capture sınıflarını inceleyeceğiz.

Regular Expressions : Bir metnin belirtilen formata uyup uymadığını kontrol eden bir dizi karakterlerden oluşur.

Regex.IsMatch(value, “^d{5}$”); //12345,14234 olur.

^ : stringin başlangıç noktasını işaret eder.
d : Sadece nümeric değer alabilir.
{5} : Sadece 5 karakter alabilir.
$ : stringin bitişi
* : tekrarlayan karakterler için kullanılır.
n : basamak sayısı
? : Bir karakteri opsiyonel yapmak için kullanılır.
//do(es)? do veya does geçerli.
x|y : Yazılan iki karakterden biri.
//(z|f)ood için sadece zood ve food olabilir.

Eğer yukardaki ifadenin başındaki ^ işareti kaldırılırsa 12345 yine geçerli olur ancak bu sefer abc12345 de geçerli olur. Bu yüzden düzenli ifadelere ^ işareti ile başlayıp $ işareti ile sonlandırmak güvenlik açısından önemlidir.

string regex = “Kor*y”; // Kory,Koray,Koraaay olabilir.
string regex2 = “Kor{1}y”; //Koray,Koroy olur , Koraay olmaz
string regex3 = “Kor{1,2}y”; //Koray,Koroy,Koraay olur , Koraaay olmaz

//Sadece Company Name: ile başlayan kısmı varsa geri

//kalan kısmı m ye atar yoksa boş döner

Match m = Regex.Match(txtCompanyName.Text, @”Company Name: (.*$)”);

MessageBox.Show(m.Groups[1].ToString());

Örnek telefon numarası kontrolü için regex
^([0-9]( |-)?)?((?[0-9]{3})?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$

Regular expressionlar ile bir stringi düzenleme işlemi de yapılabilir.

Encoding/Decoding : .NET frameworkte encoding işlemi otomatik olarak yapılır ancak bazen bu işlemi manuel yapmakta gerekebilir.
ASCII : İngiliz alfebesinde kullanılan bütün harf ve karakterleri içerir.
ANSI : American National Standarts Institue nin getirdiği standart ile farklı alfabelere sahip ülkelere arasında dosya paylaşımı sorunsuz bir şekilde yapılabilmektedir.
Unicode : 10 binlerce karakterden oluşan en büyük karakter setidir. UTF16 ve UTF8

.NET içerisinde System.Text namespace’i UTF-32,UTF-16,UTF-8 ,ASCII,ANSI/ISO tiplerinde karakterleri encode ve decode yapabilirler.

//Hello word! Tekstini Kore karakterlerine göre ASCII kodlarını listboxta listeler

Encoding ee = Encoding.GetEncoding(“Korean”);

byte[] encoded = ee.GetBytes(“Hello World!”);

for (int i = 0; i < encoded.Length; i++)

{

    listBox1.Items.Add(encoded[i].ToString());

}

//.NET Framework ün desteklediği encoding bilgilerini listeler

EncodingInfo[] ei = Encoding.GetEncodings();

foreach (EncodingInfo item in ei)

{

listBox2.Items.Add(String.Format(“{0} – {1} – {2}”,item.CodePage,item.Name, item.DisplayName));

}

 

//Dosyaya teksti utf32 olarak yazmak

StreamWriter writer = newStreamWriter(“utf32.txt”, false, Encoding.UTF32);

writer.Write(“Koray Kırdinli”);

writer.Close();

Utf32,Utf8,Utf16 her bir tipte dosyaya yazılan textler farklı dosya tipleri farklı boyutlarda dosyalar oluşturur.

April 17, 2010 - Posted by | C# | , , , ,

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s