Kullanıcı tarafından veritabanına girilmek üzere olan bilgileri, standart bir formatta düzenlemek verilerin hem doğru raporlanmasını sağlar hem de okunabilirliğini artırır. Bu bilgiler arasında genellikle tarih, para, ad soyad ve adres gibi bilgileri bulunmaktadır. Bu yazıda veritabanına girilmiş veya girilecek “ad soyad” bilgilerinin Proper Case formatına nasıl dönüştürüleceğine dair fonksiyonları vereceğiz. ProperCase olarak tanınlanan format, her kelimenin ilk harfinin büyük diğer harflerin küçük yazılmasıdır. Örneğin kullanıcının yazdığı “ahMEt kaYMAZ” şeklindeki veriyi “Ahmet Kaymaz” olarak dönüştürmektir. Bu dönüştürmeyi C#, VB.NET ve SQL tarafında birçok farklı şekilde yapabiliriz.
Eski VB sürümlerinden bildiğimiz StrConv() fonksiyonu, bu işi tek satırda yapabilmektedir. Bu fonksiyon, hangi string değeri ne tür bir formata çevireceğine dair iki parametre alır. İkinci parametre Microsoft.VisualBasic.VbStrConv enumeration’a ait seçenekleri alır.
Dim AdSoyad As String = "ahMEt kAYMAZ" Dim UCaseAdSoyad As String = StrConv(AdSoyad, VbStrConv.ProperCase) Console.WriteLine(UCaseAdSoyad)'Ahmet Kaymaz
C# tarafında Microsoft.VisualBasic.dll kütüphanesini kullanarak aynı StrConv() metodunu kullanabiliriz.
Buna alternatif olarak C# ve VB.NET tarafında System.Globalization.TextInfo sınıfı kullanılarak ta bu işlem yapılabilir.
Imports System.Globalization Imports System.Threading Module Module1 Sub Main() Dim AdSoyad As String = "ahMEt kAYMAZ" Dim cultureInfo As CultureInfo = Thread.CurrentThread.CurrentCulture Dim textInfo As TextInfo = cultureInfo.TextInfo Dim UCaseAdSoyad As String = textInfo.ToTitleCase(AdSoyad) Console.WriteLine(UCaseAdSoyad) End Sub End Module
using System.Globalization; using System.Threading; class Program { static void Main() { string AdSoyad = "ahMEt kAYMAZ"; CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; TextInfo textInfo = cultureInfo.TextInfo; string UCaseAdSoyad = textInfo.ToTitleCase(AdSoyad); Console.WriteLine(UCaseAdSoyad); }//Main }//Program
Bu işlemi doğrudan SQL Server üzerinde yapmak için Internet’te birçok farklı fonksiyon bulunmaktadır. Bunlar içerisinde benim tercih ettiğim ve kullandığım fonksiyon da şudur;
CREATE FUNCTION ProperCase(@Message varchar(100))
returns varchar(100) as
BEGIN
–Mesajı küçük harfe çevir
SET @Message = LOWER(@Message)
DECLARE @i int
SET @i = ascii(‘a’)
WHILE @i
ilk harfler Türkçe karakterler ise, o harfi büyütemiyor.
Örnek:ahmet öZKay -> Ahmet özkay olarak dönüyor
Erdal bey,.NET ile birlikte uygulamalarımıza özel yerelleştirme (localization) yapabilmekteyiz. Bu yazıdaki fonksiyon, uygulamanızda aktif olan yerel bilgilerinize bağlı olarak işlem görür. C#’taki kodunuzu aşağıdaki gibi düzenleyip deneyebilir misiniz.
CultureInfo cultureInfo = new CultureInfo("tr-TR");
TextInfo textInfo = cultureInfo.TextInfo;
string UCaseAdSoyad = textInfo.ToTitleCase("isTANbul");
Çok teşekkürler, türkçe problemini çözdüm sayenizde.