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