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 <= ascii('z')
BEGIN
set @Message = REPLACE( @Message, ' ' + CHAR(@i), ' ' + CHAR(@i-32))
set @i = @i + 1
END
SET @Message = CHAR(ASCII(LEFT(@Message, 1))-32) + RIGHT(@Message, LEN(@Message)-1)
RETURN @Message
END
GO
print dbo.ProperCase('AhmET kAYmaz')--Ahmet Kaymaz




Ocak 14th, 2008 at 23:16
ilk harfler Türkçe karakterler ise, o harfi büyütemiyor.
Örnek:
ahmet öZKay –> Ahmet özkay olarak dönüyor
Ocak 15th, 2008 at 08:36
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");