JavaScript String (Metin) İşlemleri

JavaScript’te metinler String tipindedir. Web sayfalarında kullanıcı girdisi, URL, form doğrulama, arama/filtreleme gibi işlemler yüzünden string işlemleri neredeyse kaçınılmazdır.

Önemli Not
String’ler JavaScript’te immutable (değiştirilemez) yapıdadır. Yani bir metin üzerinde işlem yaptığınızda orijinali değişmez; yeni bir string döner.

String Tanımlama


let site = "Yeni ipucu siteniz";
const mesaj = 'Merhaba Dünya';
const adSoyad = `Mehmet Erbaş`; // template literal
Püf Nokta
new String("...") kullanımı önerilmez. Bu bir “String nesnesi” üretir ve karşılaştırmalarda kafa karıştırabilir. Standart kullanım: "metin"

En Çok Kullanılan Özellikler ve Metodlar

(String’lerde ilk karakterin indeksi 0’dır.)


let s = "Yeni ipucu siteniz";

console.log(s.length);          // uzunluk
console.log(s.charAt(0));       // "Y"
console.log(s[0]);              // "Y" (pratik kullanım)

console.log(s.indexOf("ipucu"));       // ilk geçtiği yer
console.log(s.lastIndexOf("i"));       // son geçtiği yer
console.log(s.includes("ipucu"));      // true/false
console.log(s.startsWith("Yeni"));     // true/false
console.log(s.endsWith("siteniz"));    // true/false
İnce İpucu
indexOf() yerine çoğu kontrolde includes() daha okunaklıdır. Arama yapıp konum da gerekiyorsa indexOf() kullanın.

Parça Alma: slice / substring


let s = "Yeni ipucu siteniz";

// slice: negatif indeks alabilir
console.log(s.slice(5, 10));   // "ipucu"
console.log(s.slice(-6));      // "siteniz" (son 6 karakter)

// substring: negatif indeksleri 0 kabul eder
console.log(s.substring(5, 10)); // "ipucu"
Püf Nokta
Günlük kullanımda slice() genelde daha pratiktir (negatif indeks avantajı).

Büyük/Küçük Harf ve Kırpma (trim)


let input = "   Mehmet ERBAŞ   ";

console.log(input.trim());              // baş/son boşlukları siler
console.log(input.trimStart());         // sadece başı
console.log(input.trimEnd());           // sadece sonu

console.log(input.toLowerCase());
console.log(input.toUpperCase());
Püf Nokta: Karşılaştırma
Kullanıcı girişi karşılaştırırken çoğu zaman: trim().toLowerCase() ile normalize etmek işleri kolaylaştırır.

Değiştirme: replace / replaceAll


let metin = "Merhaba dünya, merhaba JavaScript";

// replace: sadece ilk eşleşme
console.log(metin.replace("merhaba", "selam")); // sadece ilkini değiştirir (case duyarlı)

// replaceAll: tüm eşleşmeler (string ile)
console.log(metin.replaceAll("merhaba", "selam"));

// Regex ile tümünü değiştirme (klasik yöntem)
console.log(metin.replace(/merhaba/gi, "selam")); // g: global, i: case-insensitive
İnce Detay
replaceAll() modern tarayıcılarda yaygın. Eski destek gerekiyorsa regex yaklaşımı güvenlidir.

Bölme ve Birleştirme: split / join


let csv = "Ankara,İstanbul,İzmir";

let arr = csv.split(",");
console.log(arr); // ["Ankara", "İstanbul", "İzmir"]

let tekrar = arr.join(" | ");
console.log(tekrar); // "Ankara | İstanbul | İzmir"

Doldurma: padStart / padEnd

Özellikle saat-tarih formatı, seri numarası, sıfır doldurma gibi işlerde kullanılır.


let no = "7";
console.log(no.padStart(3, "0")); // "007"

let dakika = "5";
console.log(dakika.padStart(2, "0")); // "05"

Artık Önerilmeyen String Metodları

Dikkat
bold(), italics(), fontcolor(), fontsize() gibi metodlar HTML etiketi üreten eski yaklaşımlardır. Modern web’de stil işi CSS ile yapılır.

Bunun yerine metni HTML’e yerleştirirken CSS sınıfları kullanın:


<span class="fw-bold text-danger">Yeni ipucu siteniz</span>

Pratik Örnek: Basit URL Slug Üretimi


function slugify(text) {
  return text
    .trim()
    .toLowerCase()
    // Türkçe karakterleri sadeleştirme (basit örnek)
    .replaceAll("ç", "c")
    .replaceAll("ğ", "g")
    .replaceAll("ı", "i")
    .replaceAll("ö", "o")
    .replaceAll("ş", "s")
    .replaceAll("ü", "u")
    // boşlukları tire yap
    .replaceAll(" ", "-")
    // gereksiz çift tireleri temizle
    .replace(/-+/g, "-");
}

console.log(slugify("  Yeni İpucu Siteniz  ")); // "yeni-ipucu-siteniz"
Püf Nokta
Daha gelişmiş dönüşümlerde normalize("NFD") + diakritik temizleme gibi yöntemler de kullanılır. Ama basit eğitim örnekleri için yukarıdaki yöntem yeterlidir.

Özet

  • String’ler immutable’dır (değişmez) → yeni string döner
  • Arama için: includes / startsWith / endsWith
  • Parça alma için: slice (negatif indeks avantajı)
  • Temizleme için: trim
  • Değiştirme için: replace / replaceAll (+regex)
  • Eski HTML üreten metodlar yerine CSS kullanın