evcil.net noktanın egemenliği

910 / 020

String İşlemleri – 1

Bu makalemizde sizlere ASP.NET'te metin işlemlerinin nasıl yürüdüğünü elimizden
geldiğince anlatmaya çalışacağız. Hatırlayacağınız üzere ASP/VBScript zamanında
biz bu işlemleri replace, mid, left gibi bazı fonksiyonları kullanarak yapıyorduk,
ASP.NET bu fonksiyonları tamamiyle unutmuş değil, kodlarını VB.NET kullanarak yazanlar
bu fonksiyonları aynı şekilleriyle kullanabilirler ama C# kullanıcıları bu fonksiyonları
kullanamazlar! ASP.NET''de zaten metinlerle olan işlerimizi gerçekleştirebilmemiz
için hali-hazırda bir kaç farklı sınıfımız mevcut.
Şimdi bu sınıflarımıza bir göz atalım.

String
Regex
Match
Group
Capture
MatchCollection
GroupCollection
CaptureCollection

Bu sınıflarımızdan String hariç hepsi System.Text.RegularExpressions aduzayının
içinde bulunuyor, bu sınıfları kullanmak istiyorsanız bu aduzayını eklemek zorunda
değilsiniz çünkü System.Text.RegularExpressions aduzayımız biz istesek de istemesek
de bütün sayfalara otomatik olarak eklenen aduzayları arasında.

String
Length

IndexOf

IndexOfAny

Insert

Remove

Replace

Substring

ToLower

ToUpper

Trim

Yukarıdaki liste String sınıfına ait, metin işlerken en çok kullanacağınız fonksiyonlardan
bazıları, bunlar haricinde String sınıfının başka fonksiyonları da olduğunu unutmayın.
Başlamadan önce son olarak şunu belirteyim, haricini belirtmediğim mühletçe bütün
fonksiyonların aramalarını "case-sensitive" yani "büyük küçük harf duyarlı" yaptığını
unutmayın.

Length : Bu String sınıfının bir üyesi (Değişken), String''in uzunluğunu
verir.

IndexOf : Bu fonksiyon String ''in içerisinde aratacağınız harf ya da kelimenin
başlangıç noktasını verir. Vereceğiniz birinci parametre aratacağınız harf ya da
kelimeyi, ikinci parametre metnin kaç numaralı karakterinden başlanması gerektiğini,
üçüncü parametresi ise kaç karakter boyunca arama yapılacağını belirtir. İki ve
üçüncü parametreleri vermek zorunda değilsiniz. Aşağıdaki örneğin sonucu 4''dür.

IndexOf - C#
<%@ Page Language = "C#" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
string sMetin = "bir sabah, alıp seni benden gitti bu diyardan";
int i = sMetin.IndexOf("sabah");
%>
<%=i%>
</BODY>
</HTML>

IndexOf - VB.NET
<%@ Page Language = "VB" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim sMetin As String = "bir sabah, alıp seni benden gitti bu diyardan"
Dim i As Integer = sMetin.IndexOf("sabah")
%>
<%=i%>
</BODY>
</HTML>

Yukarıda ki örneklerde fonksiyonumuzun ve string.Length üyesinin nasıl kullanılacağını
gördük. Burada bilmeniz gereken şey eğer sonuç pozitif bir rakam olarak dönüyorsa;
aranan kelime bulunmuştur, eğer negatif olarak dönüyorsa aranan kelime bulunamamış,
eğer sıfır ya da fonksiyona ikinci parametre olarak verdiğiniz değer döndüyse String''in
içeriği boş demektir.

IndexOfAny: String''in içerisinde, vereceğiniz bir char dizesinin içeriğindeki
herhangi bir harfin olup olmadığını kontrol eder, eğer varsa size harfin başlangıç
noktasını Integer olarak verir. Parametreleri IndexOf fonksiyonu ile aynıdır. Sadece
fonksiyonun geri dödürdüğü değer pozitif(+1) yada negatif(-1) olabilir; sonuç pozitifse
aranılan harf String içerisinde bulundu, negatif ise bulunamadı demektir. Bunu bir
String''in içerisinde istemediğiniz harfleri bulmak için kullanabilirsiniz. Aşağıdaki
örnek için sonuç -1 çıkmalıdır.

IndexOfAny - C#
<%@ Page Language = "C#" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
string sMetin = "bir sabah, alıp seni benden gitti bu diyardan";
char[] cIstenmeyen = {''#'', ''%'', ''&''};
int i = sMetin.IndexOfAny(cIstenmeyen);
%>
<%=i%>
</BODY>
</HTML>

IndexOfAny - VB.NET
<%@ Page Language = "VB" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim sMetin As String = "bir sabah, alıp seni benden gitti bu diyardan"
Dim cIstenmeyen() As Char = {"#","%","&"}
Dim i As Integer = sMetin.IndexOfAny(cIstenmeyen)
%>
<%=i%>
</BODY>
</HTML>

Insert: Bu metodumuz ise String''in içerisine başka bir String''i yerleştirmeye
yarar. İki parametre alır, birinci parametrede String''in nereye yerleştirileceği
belirtilir, ikinci parametre ise yerleştirilecek olan String''dir. Burada bilmeniz
gereken; fonksiyon geriye String döndürür; geriye dönen, üzerinde işlem yapılan
String''in yeni halidir!

Insert - C#
<%@ Page Language = "C#" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
string sMetin = "bir sabah, alıp seni benden gitti bu diyardan";
string sMetin2 = ", hazin bir mektup, bir-yâdigâr kalan";
sMetin = sMetin.Insert(sMetin.Length, sMetin2);
%>
<%=sMetin%>
</BODY>
</HTML>

Insert - VB.NET
<% @Page Language="VB" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim sMetin As String = "bir sabah, alıp seni benden gitti bu diyardan"
Dim sMetin2 As String = ", hazin bir mektup, bir-yâdigâr kalan"
sMetin = sMetin.Insert(sMetin.Length, sMetin2)
%>
<%=sMetin%>
</BODY>
</HTML>

Remove: Bu fonksiyonumuz ise bir String''in içerisindeki harf ya da harfleri
silmeye yarar. İki parametre alır; birincisi kaç numaralı harfden itibaren silinmeye
başlanacağını, ikincisi ise kaç harf silineceğini gösterir. Fonksiyonumuz Insert
fonksiyonunda olduğu gibi geriye String döndürür.

Remove - C#
<%@ Page Language ="C#" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
string sMetin = "bir sabah, alıp seni benden gitti bu diyardan";
sMetin += ", hazin bir mektup, bir-yâdigâr kalan";
sMetin = sMetin.Remove(45, 37);
%>
<%=sMetin%>
</BODY>
</HTML>

Remove - VB.NET
<%@ Page Language="VB" Debug = "True"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim sMetin As String = "bir sabah, alıp seni benden gitti bu diyardan"
sMetin += ", hazin bir mektup, bir-yâdigâr kalan"
sMetin = sMetin.Remove(45, 37)
%>
<%=sMetin%>
</BODY>
</HTML>

Replace: Bu fonksiyonumuz bir metnin içerisinde aratacağınız bir harf ya
da kelimeyi yine sizin belirleyeceğiniz başka bir harf ya da kelime ile değiştirir.
İki parametresi vardır; birincisi aranacak String ''i, ikincisi ise yerine konacak
olan String ''i temsil eder. Yine geriye String döndüren bir fonksiyondur.

Replace - C#
<%@ Page Language="C#" Debug="True" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
string sMetin = "bir akşam, alıp seni benden gitti bu diyardan";
sMetin = sMetin.Replace("akşam", "sabah");
%>
<%=sMetin%>
</BODY>
</HTML>

Replace - VB.NET
<%@ Page Language="VB" Debug="True" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim sMetin As String = "bir akşam, alıp seni benden gitti bu diyardan"
sMetin = sMetin.Replace("akşam", "sabah")
%>
<%=sMetin%>
</BODY>
</HTML>

Substring: Bu fonksiyonumuz bir String ''in içerisinde ki başlangıç noktasını
ve uzunluğunu belirtmiş olduğunuz konumdaki metni size verir. İki parametresi vardır.
Birincisi String''in içinden okunmak istenen metnin başlangıç noktasını, ikinci
parametre ise kaç karakter boyunca daha okunacağını belirtir. İkinci parametreyi
yazmak zorunda değilsiniz, eğer yazmazsanız belirttiğiniz noktadan String''in sonuna
kadar olan kısım tamamen okunur. Geriye String döndürür.

Substring - C#
<%@ Page Language="C#" Debug="True" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
string sMetin = "bir sabah, alıp seni benden gitti bu diyardan";
string sTespit;
sTespit = sMetin.Substring(10, 24);
%>
<%=sTespit%>
</BODY>
</HTML>

Substring - VB.NET
<%@ Page Language="VB" Debug="True" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim sMetin As String = "bir sabah, alıp seni benden gitti bu diyardan"
Dim sTespit As String = sMetin.Substring(10, 24)
%>
<%=sTespit%>
</BODY>
</HTML>

ToLower: Bu sınıfımız String ''in içeriğinin tamamını küçük harfe çevirir.
Fonksiyonumuz yine String döndüren bir fonkiyondur. Sadece tek parametre alır; bu
parametre metnin hangi "Kültüre" ait olduğunu belirtir. Örneğin ingilizceyi düşünecek
olursanız ''I'' harfinin küçüğü ''i'' harfidir ama türkçede bu ''ı'' olarak geçer,
bu parametrenin var oluş sebebi bu tür karmaşaları ortadan kaldırmakdır. Parametreyi
vermek zorunda değilsiniz, bu durumda var olan "Kültür" taban alınır, ama vermek
istiyorsanız bu durumda bir CultureInfo sınıfı oluşturmalısınız, Bu sınıfın "System.Globalization"
aduzayının içinde bulunduğunu da hatırlatalım. Elinde .NET SDK ''sını bulunduranlar
"CultureInfo class, about CultureInfo class" bölümünden tam listeye ulaşabilir,
haricinde aşağıdaki örnek kod derlenmek suretiyle de tam liste görüntülenebilir.

CultureInfo tam liste - C#
<%@ Page Language="C#" Debug="True" %>
<%@ Import NameSpace = "System.Globalization"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
foreach(CultureInfo CI in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
Response.Write(CI + "<BR>");
}
%>
</BODY>
</HTML>

CultureInfo tam liste - VB.NET
<%@ Page Language="VB" Debug="True" %>
<%@ Import Namespace = "System.Globalization"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim CI As CultureInfo
For Each CI In CultureInfo.GetCultures(CultureTypes.AllCultures)
Response.Write(CI.ToString() & "<BR>")
Next
%>
</BODY>
</HTML>

ToLower - C#
<%@ Page Language="C#" Debug="True"%>
<%@ Import NameSpace = "System.Globalization"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
CultureInfo CI = new CultureInfo("TR-TR");
string sMetin = "BİR SABAH, ALIP SENİ BENDEN GİTTİ BU DİYARDAN";
sMetin = sMetin.ToLower(CI);
Response.Write("CultureInfo TR-TR= "+sMetin+"<BR>");

CultureInfo CI2 = new CultureInfo("EN-US");
string sMetin2 = "BİR SABAH, ALIP SENİ BENDEN GİTTİ BU DİYARDAN";
sMetin2 = sMetin2.ToLower(CI2);
Response.Write("CultureInfo EN-US= "+sMetin2+"<BR>");
%>
</BODY>
</HTML>

ToLower - VB.NET
<%@ Page Language="VB" Debug="True"%>
<%@ Import Namespace = "System.Globalization"%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim CI As New CultureInfo("TR-TR")
Dim sMetin As String = "BİR SABAH, ALIP SENİ BENDEN GİTTİ BU DİYARDAN"
sMetin = sMetin.ToLower(CI)
Response.Write("CultureInfo TR-TR= "& sMetin &"<BR>")

Dim CI2 As New CultureInfo("EN-US")
Dim sMetin2 As String = "BİR SABAH, ALIP SENİ BENDEN GİTTİ BU DİYARDAN"
sMetin2 = sMetin2.ToLower(CI2)
Response.Write("CultureInfo EN-US= "& sMetin2 &"<BR>")
%>
</BODY>
</HTML>

Yukarıdaki örneğimizin sonuçlarını inceleyecek olursanız CultureInfo ''yu EN-US
olarak belirlediğimizde ''I'' harfinin ''ı'' olarak değilde ''i'' olarak, yanlış
bir biçimde küçültüldüğünü görebilirsiniz. Burada verdiğimiz parametreye dikkat
edin, parametreyi sadece EN şeklinde de geçebilirdik, ama eğer biraz önce bahsettiğimiz
listeyi inceleyecek olursanız bir dilin (örneğin çince) birden farklı çeşidi olduğunu
farkedeceksiniz. Bu tür bir sorunla karşılaşabileceğinizi seziyorsanız parametreyi
ikili haliyle verin.

ToUpper: Bu fonksiyonumuz ise bir önceki fonksiyonumuz ile tamamiyle aynı,
tek fark; String''in içindeki bütün harfleri büyük yapar.

Trim: Bu son fonksiyonumuz ise parametresiz olarak kullanıldığında String''in
başındaki ve sonundaki boşluk karakterlerini (white space; 0x9, 0xA, 0xB, 0xC, 0xD,
0x20, 0xA0, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008,
0x2009, 0x200A, 0x200B, 0x3000, 0xFEFF) temizlemeye yarar, eğer dilerseniz bir karakter
dizesini parametre olarak geçip String''in başından ve sonundan bu verdiğiniz karakterleri
de temizletebilirsiniz, bunun haricinde herhangi bir parametresi yok. Geriye String
döndürür. Bu fonksiyonumuza ek olarak TrimStart ve TrimEnd fonksiyonlarımızında
olduğunu hatırlatalım. Bu fonksiyonlarımız Trim fonksiyonumuzla aynı nitelikleri
taşır, yalnızca; TrimStart metnin başındaki, TrimEnd ise sonundaki boşluk yada belirtilen
karakterleri temizler.

Trim - C#
<%@ Page Language="C#" Debug="True" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
string sMetin = " bir sabah, alıp seni benden gitti bu diyardan#";
sMetin = sMetin.Trim();
Response.Write("Boşluklar temizlendi:"+ sMetin +"<BR>");

sMetin = sMetin.Trim(''#'');
Response.Write("Belirlenen karakterler temizlendi:"+ sMetin +"<BR>");
%>
</BODY>
</HTML>

Trim - VB.NET

<%@ Page Language="VB" Debug="True" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Dim sMetin As String = " bir sabah, alıp seni benden gitti bu diyardan#"
sMetin = sMetin.Trim()
Response.Write("Boşluklar temizlendi:"& sMetin &"<BR>")

sMetin = sMetin.Trim("#")
Response.Write("Belirlenen karakterler temizlendi:"& sMetin &"<BR>")
%>
</BODY>
</HTML>

Yazan: Akın Demirtuğ

No description. Please complete your profile.
Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


No trackbacks yet.

Sayfalar

Kısımlar

Desteklediklerimiz

Ay bazında arşiv

Haberleşme