Proper Case (VB.NET, C#, T-SQL)

C#, VB.NET, ASP.NET Add comments

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

2 Responses to “Proper Case (VB.NET, C#, T-SQL)”

  1. Erdal Sert Says:

    ilk harfler Türkçe karakterler ise, o harfi büyütemiyor.
    Örnek:

    ahmet öZKay –> Ahmet özkay olarak dönüyor

  2. Ahmet Kaymaz Says:

    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");

Leave a Reply


2 × = 8

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS GiriÅŸ