Lütfen yazı yazınız.
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.
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)
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
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
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
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;
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;
match() null dönebilir, kontrol etBu araç şu anda deneysel durumda. Kelime ve cümle sayma algoritmaları iyileştirilmeye açıktır.