31 Mayıs 2016 Salı

Javascript'de String Nesnesi

Merhaba Webkolog Geliştiricileri!

Bugün JavaScript'in metinsel verilerle çalışmak için bize sunduğu en temel ve en çok kullandığımız yapılardan biri olan String Nesnesini mercek altına alacağız. Web sayfalarında metinleri göstermekten kullanıcı girdilerini işlemeye, veri manipülasyonundan arama fonksiyonlarına kadar her alanda string'lerle iç içeyiz. JavaScript'in String nesnesi ve barındırdığı hazır metotlar, bu işlemleri inanılmaz derecede kolaylaştırıyor. Hadi, kelimelerin gücünü keşfedelim!


String Nedir ve Neden Önemlidir?

JavaScript'te bir string (metin dizisi), sıfır veya daha fazla karakterden oluşan bir dizi veri tipidir. Metinleri temsil etmek için kullanılırız. String'ler değişmezdir (immutable), yani bir string oluşturulduktan sonra içeriği değiştirilemez; herhangi bir metotla yapılan değişiklikler yeni bir string oluşturulmasına neden olur.

String'ler, web geliştirmede neredeyse her alanda karşımıza çıkar:

  • Kullanıcı arayüzünde metin gösterme
  • Formlardan alınan verileri işleme
  • URL'leri manipüle etme
  • JSON verilerini ayrıştırma
  • Arama ve filtreleme işlemleri

String Oluşturma Yöntemleri

String oluşturmanın birkaç yolu vardır:

1. String Literali (Tavsiye Edilen)

Tek tırnak (' '), çift tırnak (" ") veya ters tırnak (backtick - ` `) kullanarak string oluşturabilirsiniz.


    let ad = "Ali";
    let soyad = 'Mantar';
    let tamIsim = `Benim adım ${ad} ${soyad}.`; // Template Literals (ES6+)

    console.log(tamIsim); // Benim adım Ali Mantar.
2. new String() Yapıcı Fonksiyonu (Genellikle Önerilmez)

Bu yöntemle oluşturulan string'ler bir String nesnesi döndürür, ilkel string değeri değil. Bu, bazı durumlarda beklenmedik davranışlara yol açabilir.


    let mesajObjesi = new String("Merhaba");
    console.log(typeof mesajObjesi); // object
    let mesajPrimitive = "Merhaba";
    console.log(typeof mesajPrimitive); // string

    // Genellikle String nesnesi kullanmak yerine primitive string'ler tercih edilir.

String Özellikleri

1. length Özelliği

Bir string'in uzunluğunu (içindeki karakter sayısını) döndürür.


    let cumle = "Webkolog çok faydalı!";
    console.log(cumle.length); // 20

Temel String Metotları

1. Karakterlere Erişme ve Kodları Alma
  • charAt(index): Belirtilen indeksteki karakteri döndürür.
    
                let harf = "Webkolog".charAt(0); // W
                console.log(harf);
            
  • charCodeAt(index): Belirtilen indeksteki karakterin Unicode değerini döndürür.
    
                let unicodeDeger = "Ali".charCodeAt(1); // 'l' karakterinin Unicode değeri (108)
                console.log(unicodeDeger);
            
  • String.fromCharCode(code1, code2, ...): Verilen Unicode değerlerinden bir string oluşturur. Bu bir String nesne metodudur, bireysel string örneği metodu değildir.
    
                let olusturulanMetin = String.fromCharCode(65, 108, 105); // Ali
                console.log(olusturulanMetin);
            
2. String Birleştirme
  • concat(string1, string2, ...): Bir veya daha fazla string'i mevcut string'e ekleyerek yeni bir string döndürür. Genellikle + operatörü tercih edilir.
    
                let ad = "Ali";
                let soyad = "Mantar";
                let site = "(Webkolog)";
                let tamAd = ad.concat(" ", soyad, " ", site); // Ali Mantar (Webkolog)
                console.log(tamAd);
            
3. String İçinde Arama ve Konum Bulma
  • indexOf(searchValue, fromIndex): Bir string'in içinde belirli bir değerin ilk geçtiği indeksini döndürür. Bulamazsa -1 döndürür.
    
                let metin = "JavaScript öğreniyorum.";
                console.log(metin.indexOf("Script"));  // 4
                console.log(metin.indexOf("kod"));     // -1
            
  • lastIndexOf(searchValue, fromIndex): Bir string'in içinde belirli bir değerin son geçtiği indeksini döndürür. Bulamazsa -1 döndürür.
    
                let metin = "elma armut elma muz";
                console.log(metin.lastIndexOf("elma")); // 11
            
  • search(regexp): Bir string'deki belirli bir değeri (düzenli ifade ile de) arar ve eşleşmenin başlangıç indeksini döndürür. Bulamazsa -1 döndürür. indexOf'tan farkı regex alabilmesidir.
    
                let metin = "Ali ve Veli geldi.";
                console.log(metin.search(/Veli/)); // 7
                console.log(metin.search("Deli")); // -1
            
  • match(regexp): Bir string'i düzenli bir ifadeye göre eşleştirir ve eşleşmeleri içeren bir dizi döndürür.
    
                let metin = "Merhaba Dünya, JavaScript harika!";
                let eslesmeler = metin.match(/[A-Z]/g); // Tüm büyük harfleri bul
                console.log(eslesmeler); // ["M", "D", "J", "S"]
            
4. String Bölme ve Kesme
  • slice(startIndex, endIndex): Bir string'in belirli bir bölümünü yeni bir string olarak döndürür. endIndex dahil değildir. Negatif indeksler, string'in sonundan itibaren sayar.
    
                let metin = "Webkolog Dersleri";
                console.log(metin.slice(0, 7));  // Webkolo
                console.log(metin.slice(8));    // Dersleri (8. indeksten sona kadar)
                console.log(metin.slice(-8));   // Dersleri (Sondan 8. karakterden sona kadar)
            
  • substring(startIndex, endIndex): slice()'a benzer, ancak negatif indeksleri sıfır olarak kabul eder.
    
                let metin = "Merhaba Dünya";
                console.log(metin.substring(0, 7)); // Merhaba
                console.log(metin.substring(7, 0)); // Merhaba (startIndex ve endIndex yer değiştirebilir)
            
  • substr(startIndex, length): Belirtilen başlangıç indeksinden itibaren belirli bir uzunluktaki karakterleri döndürür.
    
                let metin = "Dokuz at bir kazığa bağlanmaz.";
                console.log(metin.substr(6, 2));  // at
                console.log(metin.substr(-4, 2)); // ma (Sondan 4. karakterden itibaren 2 karakter)
                console.log(metin.substr(1));    // okuz at bir kazığa bağlanmaz.
            
  • split(separator, limit): Bir string'i belirtilen ayırıcıya göre bölerek bir diziye dönüştürür. İkinci parametre (limit) döndürülecek dizi elemanı sayısını sınırlar.
    
                let meyveler = "elma,armut,çilek";
                let dizi = meyveler.split(",");
                console.log(dizi); // ["elma", "armut", "çilek"]
    
                let cumle = "Merhaba dünya nasılsın?";
                let kelimeler = cumle.split(" ", 2);
                console.log(kelimeler); // ["Merhaba", "dünya"]
            
5. String Değiştirme
  • replace(searchValue, replaceValue): Bir string'deki belirli bir değeri (veya regex eşleşmesini) başka bir değerle değiştirerek yeni bir string döndürür. Sadece ilk eşleşmeyi değiştirir, tüm eşleşmeleri değiştirmek için regex ile /g (global) bayrağını kullanmalısınız.
    
                let metin = "Kedi koştu, kedi uyudu.";
                console.log(metin.replace("kedi", "köpek"));  // Köpek koştu, kedi uyudu. (Sadece ilkini değiştirir)
                console.log(metin.replace(/kedi/g, "köpek")); // Köpek koştu, köpek uyudu. (Tümünü değiştirir)
    
                // Birden fazla kelimeyi değiştirmek (Regex ile)
                let yazi = "Ali ve Veli buradaydı.";
                console.log(yazi.replace(/Ali|Veli/g, 'Deli')); // Deli ve Deli buradaydı.
            
6. Büyük/Küçük Harf Dönüşümü
  • toLowerCase(): Bir string'in tüm karakterlerini küçük harfe dönüştürür.
    
                console.log("HELLO WEBkolog".toLowerCase()); // hello webkolog
            
  • toUpperCase(): Bir string'in tüm karakterlerini büyük harfe dönüştürür.
    
                console.log("hello Webkolog".toUpperCase()); // HELLO WEBKOLOG
            
7. Boşlukları Kırpma
  • trim(): Bir string'in başındaki ve sonundaki boşluk karakterlerini kaldırır.
    
                let mesaj = "   Merhaba Dünya!   ";
                console.log(mesaj.trim()); // "Merhaba Dünya!"
            

ES6 (ECMAScript 2015) ile Gelen Yenilikler

1. String Arama Metotları (Daha Okunabilir)

indexOf'a alternatif olarak, bir string'in başka bir string'i içerip içermediğini veya belirli bir konumda başlayıp başlamadığını kontrol etmek için daha modern metotlar geldi:

  • startsWith(searchString, position): Bir string'in belirtilen bir string ile başlayıp başlamadığını kontrol eder.
    
                console.log("Webkolog".startsWith("Web"));   // true
                console.log("Webkolog".startsWith("kolog", 3)); // true (3. indeksten itibaren kontrol)
            
  • endsWith(searchString, length): Bir string'in belirtilen bir string ile bitip bitmediğini kontrol eder. İkinci parametre, string'in hangi uzunluğa kadar kontrol edileceğini belirtir.
    
                console.log("Webkolog".endsWith("log"));   // true
                console.log("Webkolog".endsWith("Webk", 4)); // true (String'in ilk 4 karakteri "Webk" ile mi bitiyor?)
            
  • includes(searchString, position): Bir string'in içinde belirli bir string'in bulunup bulunmadığını kontrol eder.
    
                console.log("Webkolog".includes("kolo"));  // true
                console.log("Webkolog".includes("ebk", 1)); // true (1. indeksten itibaren "ebk" var mı?)
                console.log("Webkolog".includes("ebk", 2)); // false (2. indeksten itibaren "ebk" yok)
            
2. repeat(count) Metodu

Bir string'i belirtilen sayıda tekrar ederek yeni bir string döndürür.


    console.log("Ali".repeat(3)); // AliAliAli
    console.log("*-".repeat(5));  // *-*-*-*-*-
3. Template Literals (Ters Tırnaklar - ` `)

Daha önce de bahsettiğim gibi, ES6 ile gelen template literals, çok satırlı string'ler yazmayı ve değişkenleri kolayca string içine gömmeyi (string interpolation) sağlar.


    let urunAdi = "Klavye";
    let fiyat = 250;
    let mesaj = `Ürün Adı: ${urunAdi}
    Fiyat: ${fiyat} TL.
    Stoklarımızda mevcuttur.`;

    console.log(mesaj);
    /* Çıktı:
    Ürün Adı: Klavye
    Fiyat: 250 TL.
    Stoklarımızda mevcuttur.
    */

Eski ve Daha Az Kullanılan HTML Biçimlendirme Metotları

JavaScript'in String nesnesinde, metinleri HTML etiketleriyle sarmak için bazı eski metotlar da bulunur. Ancak bunlar genellikle modern web geliştirmede doğrudan kullanılmaz; CSS veya DOM manipülasyonu tercih edilir.

  • anchor("name"): <a name="..."> etiketi oluşturur.
  • big(), small(), bold(), italics(), strike(), sub(), sup(): İlgili HTML etiketlerini (<big>, <small>, <b>, <i>, <strike>, <sub>, <sup>) oluşturur.
  • fontcolor("color"), fontsize(size): HTML <font> etiketini oluşturur.
  • link("url"): <a href="..."> etiketi oluşturur.
  • blink(), fixed(): Çoğu tarayıcıda desteklenmeyen veya görsel olarak iyi durmayan HTML etiketlerini oluşturur.

    let isim = "Webkolog";
    console.log(isim.link("https://www.webkolog.net")); // <a href="https://www.webkolog.net">Webkolog</a>
    console.log(isim.bold()); // <b>Webkolog</b>

Bu metotlar genellikle doğrudan kullanılmaz, ancak var olduklarını bilmek faydalı olabilir.


Sonuç

JavaScript'teki String nesnesi, metinsel verilerle çalışırken size inanılmaz bir esneklik ve güç sunar. Karakterlere erişmekten, metinleri birleştirmeye, arama yapmaktan, bölmeye veya biçimlendirmeye kadar birçok işlemi kolayca yapabilirsiniz. Özellikle ES6 ile gelen startsWith, endsWith, includes ve template literals gibi yenilikler, string manipülasyonunu daha da keyifli ve okunabilir hale getirmiştir.

Kendi projelerinizde string metotlarını aktif olarak kullanın ve her birinin ne işe yaradığını deneyimleyerek öğrenin. Metinlerle ne kadar rahat çalışırsanız, web geliştirme serüveniniz de o kadar akıcı olacaktır!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder