Java İpucu #1 – String Nesnesinde Nümerik Karakter Kontrolü

Bir string nesnesinin tamamen nümerik karakterlerden (0-9) oluştup oluşmadığının kontrolü kimi zaman ihtiyaç dahilinde olabilir. Örneğin, herhangi bir ürünün kodu veritabanında text olarak tutulabilir ve bu kodun tamamının nümerik karakterlerden oluşması istenebilir. Bir string nesnesinin nümerik karakterlerden oluşup oluşmadığı çeşitli yöntemlerle kontrol edilebilir:

İlk yöntem, Integer sınıfının parseInt metodunu kullanmak. Basit bir örnekle görelim:

public static boolean stringNumericTest1(String code) {
	try {
		Integer.parseInt(code);
	} catch (NumberFormatException numberFormatException) {
		return false;
	}
	return true;
}

Burada tek yaptığımız şey parseInt metodunu kullanarak, fırlatabileceği NumberFormatException nesnesini yakalamak. Yani, tüm işi parseInt metodu hallediyor. Eğer, metot string nesnesini int tipine çeviremez ise NumberFormatException nesnesi fırlatıyor. Güzel yanı, kullanımının sade ve basit olması. Burada dikkat edilmesi gereken nokta parseInt metodu başında “-“ karakteri olan stringleri de çevirebiliyor. Eğer bu durum sizin için uygun değilse, metottan dönen int değerinin negatif olup olmadığını kontrol edebilirsiniz.

İkinci yöntem biraz daha alt seviye bir işlem. Tüm karakter kontrolleri elle yapılıyor:

public static boolean stringNumericTest2(String code) {
	for (int i = 0; i < code.length(); i++) {
		if(!Character.isDigit(code.charAt(i)))
			return false;
	}
	return true;
}

Görüldüğü üzere, string nesnesinin tüm karakterleri sırayla dolaşılıyor ve Character sınıfının static metodu isDigit ile o karakterin nümerik olup olmadığını bakılıyor. Nümerik olmayan karakterle karşılaşıldığı anda metot false değerini döndürüyor. Tüm karakterler nümerik ise metot true değerini döndürüyor.

Üçüncü ve son yöntem ise düzenli ifadeler (regular expressions) yöntemi:

public static boolean stringNumericTest3(String code) {
	if(code.matches("[0-9]+"))
		return true;
	return false;
}

String sınıfının matches metoduna istenilen düzene sahip düzenli ifade verilerek string nesnesinin bu düzenli ifadeye uyup uymadığının kontrolü yapılıyor. Belirtilen düzenli ifade ([0-9]+) tam anlamıyla konuyu içeriyor 🙂 : “code nesnesi 1 veya daha fazla nümerik karakterden mi oluşuyor?”. Kullanımı gayet basit bir yöntem daha. Bu yöntemin güzelliği düzenli ifadeyi değiştirerek string nesnesinin istenilen şekilde kontrolü mümkün olabiliyor. Örneğin, bilimsel notasyondaki sayılar (5e+10 gibi) bile kontrol edilebilir hale getirilebilir. Düzenli ifade bilgisi gerektiğini söylememe gerek yok herhalde 🙂

Şimdilik bu kadar. Umarım faydalı olabilecek bir konu olmuştur. Herkese iyi çalışmalar.