VBSCRIPT ILE STRING DÜZENLEME
STRING NEDIR BABA?
Microsoft'taki Türkçe kelime motorundan sorumlu arkadaslar "dizgi" diyorlar "string"e. Takdir ediyorum,
güzel bir kelime. Onceleri anlamadan geçiyordum bu kelimeyi. Daha sonra metinden çikardigim anlama gore
bu kelimenin String yerine kullanildigini farkettim. O an ne kadar mutlu oldum bilemezsiniz. Ah...
Aslinda String deyimi, gerçke anlamiyla da ortüsüyor. "Sicim, ip" karsiligindaki bu deyim, karakterlerin pes
pese siralandigi veri türünü ifade ediyor. Burada karakterler için bir ayrim yok. Rakam, harf, sembol..
Yeryüzünde mevcut karakterlerin olusturdugu bir zincir. Pascal'da dizileri kavradiktan sonra string türü
verilerin de "katakter dizisi" olarak adlandirilmasinda hiç bir sakinca olmadigini gormüstük. Yine de biz
"dizgi" diyelim de hem sizi fazla kizdirmadan bu anlamsiz geyigi keseyim, hem de Microsoft "yerlesikligine"
riayet edelim.
Peki dizgilere ve onlari biçimleyecegimiz fonksiyonlara neden gereksinim duyuyoruz? Neden? Çünkü biz
"dizgi" siz bir sey yapamayiz. (Üff... sikildim bu kelimeden. Ben "string" diye devam edecegim, kusura
bakmayin.) Ornegin okudugunuz bu yazi bir string türü veridir. Formla yolladiginiz her sey string türdedir.
Sorgu cümleciginden aldiginiz ivir ve zivir her sey stringdir. E bu kadar stringlerle iç içeyiz, o zaman onlara
daha yakindan bakalim degil mi? Stringlerin onemli bir ozelligi matematiksel bir kiymet tasimamalaridir.
String türünde bir degiskende rakamsal veriler varsa, bunlari ancak CINT gibi bir convertion (donüsüm)
fonksiyonu yardimiyle sayisal veri türüne çevirip matematiksel kavgalara sokabilirsiniz.
String lere matematik anlatamiyoz diye onlari basi bos birakacaz demedik. Programlama dillerinde bir takim
metin düzenleme fonksiyonlari bulunuyor. VBScript ise Visual Basic dayisindan aldigi string formatlama
fonksiyonlari ile karsimiza çikiyor. Bunlar: Asc, AscB, AscW, Chr, ChrB, ChrW, Filter, InStr, InStrB,
InStrRev, Join, Len, LenB, LCase, UCase, Left, LeftB, Mid, MidB, Right, RightB, Replace, Space,
Split, StrComp, String, StrReverse, LTrim, RTrim, Trim. Uff... Bunlarin hepsini degil de islerimizde
çok fazla ihtiyaç duyacagimiz belli baslilarini inceleyecegiz.
LEN FONKSIYONU
Length kelimesinden alir adini. Bir string ifade içindeki karakter sayisini dondürür.
Len("Ankara−Izmit") ifadesi 380 (km) degil de ifadedeki karakter sayisi olan 12 yi dondürür.
Ornek:
Dim mystr
mystr = "Ikimiz bir kuslar gibi yuva kuralim. Ayirmasin Mevlam bizi omür boyunca.. "
Response.write LEN(mystr) ' sayfaya 74 yazar
VBSCRIPT ILE STRING DÜZENLEME 50 ASP NEDIR?
UCASE, LCASE FONKSIYONLARI
Harflerin büyük−küçük donüsümünü yaparlar. UCASE("ahMet") > "AHMET", LCASE("MUCIt") > "mucit"
orneklerinden anlasilacagi gibi UCASE uppercase ye, LCASE lowercaseye donüsüm yapar. Yalniz dikkat
edilmesi gereken bir husus:
UCASE("isil") > "iSiL" ; LCASE("ISIL") > "isil". Artik bu istenmeyen durumu kendi yazacaginiz ozel
büyüt−küçült fonksiyonlariyla asacaksiniz. (Merak etmeyin, yazariz bir tane)
INSTR FONKSIYONU
Bu güzel fonksiyon bize arama türü bir islev saglar. Uzun bir metin içerisinde daha kisa bir ifadenin indis
olarak baslangiç pozisyonunu verir. Soz dizimi: INSTR(index, uzun_string, aranacak_string,
karsilastirmakodu) seklindedir. Burada index ise uzun string içindeki aramanin hangi siradaki karakterden
baslayacagini bildirir. Bu siradan onceki metne bakilmaz. Eger index parametresi geçirilmezse 1 olarak kabul
edilir. Aranilan ifadeye rastlanmazsa fonksiyon 0 degeri dondürür. Karsilastirma kodu 0 yazildiginda
VbBinaryCompare yapilir, 1 yazildiginda ise VBTextCompare yapilir. Bunun ayrimina büyük küçük harf
duyarliginda varirsiniz. Asagidaki ornekleri inceleyin.
Ornek:
Dim mystr
mystr = "Bilene her devir aslinda Lâle Devri / Akliniz varsa Nedim gibi yasayin..(Ü.Y.O)"
Response.write Instr(1, mystr, "Bilene", 0) 'sayfaya 1 yazar
Response.write Instr(1, mystr, "Bilene", 1) 'sayfaya 1 yazar
Response.write Instr(1, mystr, "bilene", 0) 'sayfaya 0 yazar
Response.write Instr(1, mystr, "bilene", 1) 'sayfaya 1 yazar
Response.write Instr(mystr, "Lâle") 'sayfaya 26 yazar
Response.write Instr(mystr, "lâle") 'sayfaya 0 yazar
Response.write Instr(1, mystr, "lâle", 1) 'sayfaya 26 yazar
Response.write Instr(mystr, "Kizilcahamam Maden Sulari") 'sayfaya 0 yazar
REPLACE FONKSIYONU
Gayet faydali bir fonksiyondur. Uzun bir metin içerisindeki belirlediginiz ifadeyi baska ifadeyle
degistirmenizi saglar.
Soz dizimi: REPLACE(string, degisecek_olan, yerine_konulacak, baslangiç_indexi, degisiklik_sayisi,
karsilastirmakodu)
Parametreler:
String: Içinde degisiklik yapacagimiz metindir.
Degisecek_olan: Metin içinde degistirmek istedigimiz alt−dizgi (sub−string) dir.
Yerine_konulacak: Belirtilen alt−dizginin yerine konulacak ifadedir.
Baslangiç_indexi: Degistirme isleminin, stringin kaçinci karakterinden baslayacagidir. Varsayilan: 1
Degisiklik_sayisi: Çok açik. −1 yazilirsa bulunan tüm alt−dizgiler degistirilir.
karsilastirmakodu: VBTextCompare için 1, VBBinaryCompare için 0 yazilabilir. Varsayilan 0.
UCASE, LCASE FONKSIYONLARI 51 ASP NEDIR?
UCASE, LCASE FONKSIYONLARI 51 ASP NEDIR?
Replace fonksiyonu su sekilde de islev yapar. REPLACE(string, degisecek, yerinekonulacak). Ancak
fonksiyonun daha verimli kullanilabilmesi için tüm parametlerinin belirtilmesi gerekir. Ornekleri inceleyin,
anlayacaksiniz.
Ornek:
Dim mystr
mystr = "Agir agir çikacaksin bu merdivenlerden"
Response.write replace(mystr, "Agir", "Hizli", 1, −1, 0)
' sayfaya "Hizli agir çikacaksin bu merdivenlerden" yazar.
Response.write replace(mystr, "Agir", "Hizli", 1, −1, 1)
' sayfaya "Hizli Hizli çikacaksin bu merdivenlerden" yazar.
Response.write replace(mystr, "a", "A", 1, −1, 1)
' sayfaya "Agir Agir çikAcAksin bu merdivenlerden" yazar.
Response.write replace(mystr, "a", "A", 1, 2, 1)
' sayfaya "Agir Agir çikacaksin bu merdivenlerden" yazar.
Replace fonksiyonu bir çok yerde yardimimiza yetisir. Ornegin bir formdan alinan içerikte yer almasi
muhtelemel istenmeyen ifadelerin ayiklanmasi saglanabilir. HTML taglerinin kullanilmasi onlenebilir. Ve
daha bir çok yerde REPLACE size büyük fayda saglayacaktir.
LEFT, RIGHT FONKSIYONLARI
Left bir metnin sol bogründen, Right bir metnin sol bogründen belirtilen sayida karakter alir. Sozdizimi:
LEFT|RIGHT(string, uzunluk).
Ornek:
Dim mystr
mystr = "Yüz bin elle dokunurum sana, Istanbul a..."
Response.write LEFT(mystr, 7) ' sayfaya "Yüz bin" yazar
Response.write RIGHT(mystr, 13) ' sayfaya "Istanbul a..." yazar
MID FONKSIYONU
Left fonksiyonunun biraz gelismis seklidir. Burada uzunluk parametresinden once bir de index parametresi
gonderilir.
sozdizimi: MID(string, index, uzunluk)
Ornek:
Dim mystr
mystr = "Yüz bin gozle seyrederim seni, Istanbul u"
Response.write MID(mystr, 5, 3) ' sayfaya "bin" yazar
LEFT, RIGHT FONKSIYONLARI 52 ASP NEDIR?
LEFT, RIGHT FONKSIYONLARI 52 ASP NEDIR?
TRIM, LTRIM, RTRIM FONKSIYONU
Bosluk (space) karakterlerini kirpan fonksiyonlar. TRIM her iki yandan, LTRIM sol yandan, RTRIM sag
yandan bosluklari kirpar.
Ornek:
Dim mystr
mystr = " KIRP BENI "
Response.write TRIM(mystr) ' sayfaya "KIRP BENI" yazar
Response.write LTRIM(mystr) ' sayfaya "KIRP BENI " yazar
Response.write RTRIM(mystr) ' sayfaya " KIRP BENI" yazar
STRREVERSE FONKSIYONU
Biraz eglenceli, biraz da fuzuli geliyor bana. Metni ters çeviriyor. Bunun için hazir fonksiyon yazmaya ne
gerek vardi? Ornege bakin.
Ornek:
Dim mystr
mystr = "kitap"
mystr2 = "ey edip adanada pide ye"
Response.write StrReverse(mystr) ' sayfaya "patik" yazar
Response.write StrReverse(mystr2) ' sayfaya "ey edip adanada pide ye" yazar.. ehu ehu
STRING FONKSIYONU
VBScript ten yine evlere senlik bir fonksiyon. Belirtilen sayida karakterin tekrarini içeren string olusturuyor.
Ornek:
Response.write STRING(5, "*") ' sayfaya "*****" yazar
SPLIT FONKSIYONU
Bir metinden belirlenmis ayraçlar (delimiter) vasitasiyla belirtilen sayida alt−dizgi içeren 0 tabanli, tek
boyutlu dizi üretir.
Sozdizimi: SPLIT(ifade, ayraç, sayi, karsilastirmakodu).
(Sayi yerine −1 yazilirsa tüm belirlenen tüm alt−dizgiler isleme tabi tutulur.)
Ne is yaptigini anlamak için ornek yapalim.
Ornek:
Dim mystr, dizi(3)
mystr = "EvcilASP|Türkiye nin|ASP Bostani"
dizi = SPLIT(mystr, "|", −1, 1)
TRIM, LTRIM, RTRIM FONKSIYONU 53 ASP NEDIR?
TRIM, LTRIM, RTRIM FONKSIYONU 53 ASP NEDIR?
Reponse.Write dizi(0) ' sayfaya "EvcilASP" yazar
Reponse.Write dizi(1) ' sayfaya "Türkiye nin" yazar
Reponse.Write dizi(2) ' sayfaya "ASP Bostani" yazar
JOIN FONKSIYONU
Split fonksiyonuna gore zir islemi yapar. Bir dizinin elemanlarini belirtilen ayraç ile birlestirip bir string
üretir.
Sozdizimi: JOIN(ifade, ayraç)
Ornek:
Dim dizi(3), str, str2
dizi(0) = "Ben"
dizi(1) = "Sekizinci"
dizi(2) = "Henri"
str = JOIN(mystr, "|")
str2 = JOIN(mystr, " ")
Reponse.Write str ' sayfaya "Ben|Sekizinci|Henri" yazar
Reponse.Write str2 ' sayfaya "Ben Sekizinci Henri" yazar
Bu kadar. Bu ogrendigimiz fonksiyonlar bize simdilik yeter de artar bile. Ancak gelisen kosullara gore
diger fonksiyonlara da ileride goz atmak gerekebilir. Haydi sagicakla kalin. Her string biçimlendirme
sirasinda EvcilASP yi hatirlayin. Eyvallah...