Parse( ) Metodu
Parse() metodu string bilgiler sayısal bilgiye dönüştürülmek istendiğinde kullanılmaktadır.
Değişik türdeki bilgiler Convert sınıfının ilgili metotları ile String e çevrilirken istenildiği gibi biçimlendirilmektedir. Bazen bu işlemin tersine gerek duyulur. Örneğin bir TextBox a yazıp biçimlendirdiğiniz string bilgiyi sayısal bilgiye dönüştürmek isteyebilirsiniz. Bu dönüştürme işlemini .NET Framework ile gelen Int16, Int32, Boolean vb. gibi sınıfların Parse() metotlarından yararlanarak yapabilirsiniz. Parse() metodunun en basit şekli ile nasıl kullanıldığını aşağıda görebilirsiniz.
int Sayi;
string Str;
Str = "123";
Sayi = System.Int16.Parse(Str);
Bu kodda önce Integer ve String 2 değişken tanımladım ve String değişkene yalnızca rakamlardan meydana gelen bilgi aktardım. Ardından bu String değişkeni Int16 sınıfının Parse() metoduna parametre olarak verip Integer değişkene aktardım.
String bilgide küçük bir değer saklandığı için Int16 sınıfının Parse() metodunu kullandım. String bilgide büyükçe bir sayı saklanıyor olsaydı bu kez Int32 sınıfının Parse() metodunu kullanmam gerekirdi. String bilgileri Parse() metodu ile dönüştürürken sayısal bilginin tipine ve büyüklüğüne göre sınıf seçimini yapmalısınız. Örneğin String değişkende kesirli sayı olarak değerlendirilecek bilgi varken Int16 veya Int32 sınıflarının Parse() metodu ile dönüştürme yaparsanız hata meydana gelir. Aşağıda verilen kod işletildiğinde String değişkenin içeriği Parse() metodu ile Single bilgiye dönüştürülür.
Single Sayi;
string Str;
Str = "123,456";
Sayi = System.Single.Parse(Str);
textBox1.Text = Convert.ToString(Sayi);
Single sınıfının Parse() metodu kendisine parametre olarak verilen String bilgiyi kayıpsız olarak Single tipine dönüştürür. Şimdi ise üçer hanelere ayrılmış tamsayı şeklinde düzenlenmiş bilgi içeren String değişkenin içeriğini Parse metodu ile Long değişkene aktaracağım.
long Sayi;
string Str = "1.234.567";
Sayi = System.Int32.Parse(Str);
İlk bakışta Parse() metodunun dönüştürmeyi başarılı bir şekilde yapacağı beklenir. Ancak bu şekilde üçer hane ayırıcı olarak kullanılabilecek karakter içeren bilgiyi Parse() metodu ile dönüştürmek istiyorsanız Parse() metodunun 2. parametresinde bunu belirtmeniz gerekir.
long Sayi;
string Str = "1.234.567";
Sayi = System.Int32.Parse(Str, System.Globalization.NumberStyles.AllowThousands);
Bu örneği denediğimde kullandığım bilgisayarda ondalık ayırıcı karakter olarak virgül(,), binlik basamak ayırıcı karakter olarak nokta(.) geçerliydi. Bu şartlarda Parse() metodu aşağıdaki gibi kullanılırsa hata meydana gelir.
long Sayi;
string Str = "1,234,567";
Sayi = System.Int32.Parse(Str, System.Globalization.NumberStyles.Any);
textBox1.Text = Convert.ToString(Sayi);
Bu sırada kullandığım bilgisayarda üçer hane ayırıcı karakter olarak virgül(,) geçerli olsaydı hata meydana gelmezdi. Bu gibi durumlarda Parse() metodunun 3. parametresi ile bölgesel ayar seçimini yapabilirsiniz.
long Sayi;
string Str = "1,234,567";
System.Globalization.CultureInfo ulke;
ulke = new System.Globalization.CultureInfo("en-US");
Sayi = System.Int32.Parse(Str, System.Globalization.NumberStyles.Any, ulke);
textBox1.Text = Convert.ToString(Sayi);
Parse() metoduna 3. parametre olarak vermek üzere System.Globalization.CultureInfo tipinde bir değişken tanımladım. Parametre olarak ?en-US? kullandığım için Parse() metoduna 1. parametre olarak verdiğim bilgi hatasızca Long tipine dönüştürüldü. Şimdi ise örnek olması için 16 tabanlı bir sayıya çevrilebilecek string bilgiyi Parse() metoduna parametre olarak vereceğim. Bu amaçla hazırladığım örneği aşağıda görebilirsiniz.
long Sayi;
string Str = "FFFF";
Sayi = System.Int32.Parse(Str, System.Globalization.NumberStyles.HexNumber);
textBox1.Text = Convert.ToString(Sayi); // TextBox a 65535 yazılır.
Parse sınıfının ToString() metodu ile kolayca 10 tabanlı sayıları 16 tabanlı olarak String bilgiye dönüştürülebilir. Bu işlemin nasıl yapıldığını aşağıda görebilirsiniz.
int sayi=255;
string str;
str = Convert.ToString(sayi, 16);
textBox1.Text = str;