Kelime, Cümle ve Karakter Sayacı

DENEYSEL! HENÜZ TAMAMLANMADI

Lütfen yazı yazınız.


📚 Algoritma Nasıl Çalışıyor?

Metin Analizi Nedir?

Metin analizi, bir metindeki kelime, cümle ve karakter sayısını belirleme işlemidir. Bu, düzenli ifadeler (regex) ve string işlemleri kullanılarak yapılır.

1. Karakter Sayısı Hesaplama

En basit yöntem, string'in length özelliğini kullanmaktır:

const text = "Merhaba Dünya";
const characterCount = text.length;  // 14

// Boşluklar dahil tüm karakterler sayılır
"Hello World".length  // 11 (boşluk dahil)

Boşlukları Hariç Tutma:

const textWithoutSpaces = text.replace(/\s/g, '');
const characterCount = textWithoutSpaces.length;

// Regex: /\s/g
// \s → boşluk karakteri (space, tab, newline)
// g → global flag (tümünü bul)

2. Kelime Sayısı Hesaplama

Regex ile Kelime Bulma:

const text = "Merhaba Dünya";
const wordList = text.match(/\w+\s/g);

// Regex: /\w+\s/g
// \w+ → bir veya daha fazla kelime karakteri (harf, rakam, _)
// \s  → boşluk karakteri
// g   → global flag

// Sonuç: ["Merhaba ", "Dünya "]
const wordCount = wordList ? wordList.length : 0;  // 2

Alternatif Yöntem - split():

const words = text.trim().split(/\s+/);
// trim() → baş ve sondaki boşlukları temizle
// split(/\s+/) → bir veya daha fazla boşluğa göre böl

// "Merhaba   Dünya" → ["Merhaba", "Dünya"]
const wordCount = words.length;  // 2

3. Cümle Sayısı Hesaplama

Cümleler genellikle nokta (.), soru işareti (?) veya ünlem (!) ile biter:

const text = "Merhaba. Nasılsın? Harika!";
const sentenceList = text.match(/\s+[^.!?]*[.!?]/g);

// Regex: /\s+[^.!?]*[.!?]/g
// \s+       → bir veya daha fazla boşluk
// [^.!?]*   → nokta, soru, ünlem dışında herhangi bir karakter (0 veya daha fazla)
// [.!?]     → cümle bitiş işareti

// Sonuç: [" Merhaba.", " Nasılsın?", " Harika!"]
const sentenceCount = sentenceList ? sentenceList.length : 0;

Daha İyi Bir Yöntem:

function countSentences(text) {
  // Cümle bitiş işaretlerine göre böl
  const sentences = text.split(/[.!?]+/);
  
  // Boş string'leri filtrele
  const validSentences = sentences.filter(s => s.trim().length > 0);
  
  return validSentences.length;
}

// "Merhaba. Nasılsın? Harika!" → ["Merhaba", "Nasılsın", "Harika", ""]
// Filter sonrası: ["Merhaba", "Nasılsın", "Harika"]
// Sonuç: 3

4. Regex (Düzenli İfadeler) Açıklaması

Temel Regex Öğeleri:

// \w → kelime karakteri (harf, rakam, _)
// \s → boşluk karakteri
// \d → rakam
// .  → herhangi bir karakter (nokta değil!)
// +  → bir veya daha fazla
// *  → sıfır veya daha fazla
// ?  → sıfır veya bir
// ^  → satır başı
// $  → satır sonu
// [abc] → a, b veya c karakterlerinden biri
// [^abc] → a, b, c dışında herhangi bir karakter

5. String.match() Metodu

match() metodu, regex ile eşleşen tüm kısımları bir dizi olarak döndürür:

const text = "Merhaba Dünya";
const matches = text.match(/\w+/g);

// Sonuç: ["Merhaba", "Dünya"]
// Eğer eşleşme yoksa: null

// Null kontrolü:
const wordCount = matches ? matches.length : 0;

6. Gelişmiş Metin Analizi

Paragraf Sayısı:

const paragraphs = text.split(/\n\s*\n/);
const paragraphCount = paragraphs.filter(p => p.trim().length > 0).length;

Benzersiz Kelime Sayısı:

const words = text.toLowerCase().match(/\w+/g);
const uniqueWords = new Set(words);
const uniqueWordCount = uniqueWords.size;

Önemli Noktalar

  • Boş Metin Kontrolü: Her zaman boş metin durumunu kontrol et
  • Null Kontrolü: match() null dönebilir, kontrol et
  • Trim Kullanımı: Baş ve sondaki boşlukları temizle
  • Regex Performansı: Karmaşık regex'ler yavaş olabilir

Not

Bu araç şu anda deneysel durumda. Kelime ve cümle sayma algoritmaları iyileştirilmeye açıktır.