Nis
9
2017

JQuery ve JavaScript ile Kelime, Harf, Hece, Rakam ve Noktalama İşareti sayısı bulan ve Sayıyı Yazıya Çeviren program

Bu program girilen metindeki (Türkçe karakterler de dahil) Kelime, Hece, Harf, Rakam ve Noktalama işaretleri sayısını bulup ekrana yazdırır.

Programa buraya tıklayarak erişebilirsiniz.

JQuery hakkında başlangıç bilgisi için daha önceden hazırlamış olduğum web sayfasından yardım alabilirsiniz.

UYGULAMA İÇİN BAŞLICA BİLİNMESİ GEREKENLER
match
 : Karakter dizisinde düzenli ifade eşleşmesini kontrol eder.
Türkçe alfabeyi veren REGEX ifadesi: var alfabe = /^[a-zA-ZÂâÎîİıÇ窺ÜüÖöĞğ]/;

 

Kelime Sayısı bulma :

Bir kelime harflerden oluşan ve sonunda boşluk olan söz dizilerinden oluşur. Bu mantıkla kelimeyi anlayabilmek için bitimine bakmak gerekir.
Eğer bir kelimenin bitimi harf haricinde bir karakter ile bitiyorsa o kelimedir. Aşağıdaki kodda Harflerimi belirledikten sonra matc komutu ile girilen yazıda aradığım harflerin olup olmadığını buluyorum. Daha sonra ise kelimem istediğim harflerden biri ile mi bitiyor diye bakıyorum ve bunun sonucunda kelime sayımı arttırıyorum.

function kelimeSayisi(icerik) {
var alfabem = /^[a-zA-ZÂâÎîİıÇ窺ÜüÖöĞğ]/;
var kelimeSayisi = 0;

for (var i = 0; i < icerik.length-1; i++) {
if (icerik[i].match(alfabem) && !icerik[i+1].match(alfabem))
kelimeSayisi++;
};

// Son karakterim istediğim kelimeler ile mi bitiyor.
if (icerik[icerik.length-1].match(alfabem))
kelimeSayisi++;

return kelimeSayisi;
}

 

Hece Sayısı bulma :

Bir kelime icerisinde hangi sayıda hece olacağını Türkçemizde sesli harf sayılarına bakarak anlayabiliriz. Bunun için bir dizi oluşturdum ve bu dizinin içerisinde sesli harflerimi ekledim.
daha sonra ise girilen metinde kaç adet sesli harf olduğunu bularak hece sayımı arttırdım.

function heceSayisi(icerik) {
var sesliHarfler = ‘AaÂâEeIıİiÎîOoÖöUuÜü’;
var heceSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(sesliHarfler.indexOf(icerik[i]) > -1)
heceSayisi++;

return heceSayisi;
}

 

Harf Sayısı bulma :

Bir kelime harflerden oluşur ve kelimenin içinde geçen karakterlerden dizime uygun olan harfleri sayarak harf sayısını belirledim.

function harfSayisi(icerik) {
var alfabem = /^[a-zA-ZÂâÎîİıÇ窺ÜüÖöĞğ]/;
var harfSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(icerik[i].match(alfabem))
harfSayisi++;

return harfSayisi;
}

Rakam Sayısı bulma :

Belirlemiş olduğum dizi içerisindeki rakamlarımdan metinin içerisinde bulduğu taktirde rakam sayısını arttırarak toplam sayımı belirledim.

function rakamSayisi(icerik) {
var rakamlarim = ‘0123456789’;
var rakamSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(rakamlarim.indexOf(icerik[i]) > -1)
rakamSayisi++;

return rakamSayisi;
}

Noktalama İşareti Sayısı bulma :

Benzer şekilde noktalama işaretlerimi diziye atarak metnimin içerisinde kaç adet noktalama işareti olduğunu buldum.

function noktalamaSayisi(icerik) {
var noktalamalarim = “‘.,:;!?-‘”;
var noktalamaSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(noktalamalarim.indexOf(icerik[i]) > -1)
noktalamaSayisi++;

return noktalamaSayisi;
}

 

Sayıyı Yazıya Çevirme

Programda ekran çıktısı kısmında, bulunan işlemlerin sonucundaki sayıları yazı olarak yazılması da eklenmiştir.

Sayıyı yazıya çevirmedeki mantık;
-Girilen bir sayının önce kaç basamaklı olduğunu anlamak gerekiyor. (Bunun için sayı değerinin uzunluğuna bakılmıştır.)
-basamaklardaki her değer işlenerek daha önceden oluşturmuş olduğumuz dizi içerisindeki String ifadesi ile karşılaştırılacaktır.
-Döngü sayı değeri basamakları kadar tekrar edecektir.
– buradaki püf nokta rakamın string ifadesini bulduktan sonra değişkene kaçıncı basamakta olduğunun bilgisini de ekleyip güncellemektir.
– Program yapım süresi kısa olduğu için şimdilik sadece 9999 sayısına kadar olan sayıları yazıya çeviriyor. Gerekli güncelleme daha sonra yapılacaktıt.

///////////////////////// SAYI DÖNÜŞTÜRME FONKSİYONU —— BAŞLA

function SayiDonustur(sayi){

var rakamlarim = String(sayi);

var bolum1 = [“”, “bir”, “iki”, “üç”, “dört”, “beş”, “altı”, “yedi”, “sekiz”, “dokuz”];
var bolum2 = [“”, “on “, “yirmi “, “otuz “, “kırk “, “elli “, “altmış “, “yetmiş “, “seksen “, “doksan “];
var bolum3 = [“”, “yüz “, “bin “, “milyon “, “milyar “, “trilyon “, “katrilyon “];

var sonuc = “”; // SONUÇ değişkenime Yazıyı ekleyerek Yazıyorum.

var son;
var basamak = 1; // işlenen basamak
var kac = rakamlarim.length; // kaç rakam var?
var sonRakam; // işlenen basamağın rakamsal değeri

for (i = 0; i < kac; i++)
{
son = rakamlarim[kac – 1 – i]; // son karakterden başlayarak çözümleme yapıyoruz.
sonRakam = parseInt(son); // İşleme giren Rakam

if (basamak == 1)
{ // birinci basamak bulunuyor
sonuc = bolum1[sonRakam] + sonuc;
}

else if (basamak == 2)
{ // ikinci basamak
sonuc = bolum2[sonRakam] + sonuc;
}

else if (basamak == 3)
{ // 3. basamak
if (sonRakam == 1)
{
sonuc = bolum3[1] + sonuc;
}
else if (sonRakam > 1)
{
sonuc = bolum1[sonRakam] + bolum3[1] + sonuc;
}
}

else if (basamak == 4)
{ // 4. basamak
if (sonRakam == 1)
{
sonuc = bolum3[2] + sonuc;
}
else if (sonRakam > 1)
{
sonuc = bolum1[sonRakam] + bolum3[2] + sonuc;
}
}

basamak++; // Basamak değerini arttır
}

return sonuc;
}

///////////////////////// SAYI DÖNÜŞTÜRME FONKSİYONU —— BİTİŞ

 

JQuery :

Programın bu bölümünde JQery kullanarak butona tıklandığı taktirde gelişecek Click olayına fonksiyonlarımı çağırdım ve ekranda belirtmiş olduğum yerlere yazılmalarını sağladım.

$(document).ready(function()
{
console.log(“doc ready”);

$(hesapla).click(function(){
console.log(“doc ready”, $(‘#icerik’).val());
var icerik = $(‘#icerik’).val();
$(‘span.harfSonuc’).html(harfSayisi(icerik));
$(‘span.heceSonuc’).html(heceSayisi(icerik));
$(‘span.kelimeSonuc’).html(kelimeSayisi(icerik));
$(‘span.rakamSonuc’).html(rakamSayisi(icerik));
$(‘span.noktalamaSonuc’).html(noktalamaSayisi(icerik));

$(‘span.harfSonucYazi’).html(SayiDonustur(harfSayisi(icerik)));
$(‘span.heceSonucYazi’).html(SayiDonustur(heceSayisi(icerik)));
$(‘span.kelimeSonucYazi’).html(SayiDonustur(kelimeSayisi(icerik)));
});

});

Ayrıca basit Css ile programda renk süslemesi yaptım. Programın tüm koduna aşağıdan erişebilirsiniz. Gerekli kütüphaneleri çağırdıktan sonra Html sayfası olarak kaydetmeniz gerekmektedir.

iyi günler.

D.Ali KARATAŞ – Kelime, Hece, Harf Sayıcı Programı

<!–

KONU : KELİME SAYISI, HECE SAYISI, HARF SAYISI BULAN PROGRAM

D.Ali KARATAŞ
www.alikaratas.com

Dersin Adı : BIL 210 Algoritmalar
Dersin Sorumlusu : Prof. Dr. Vasif. V. NABİYEV

–>

<html>
<head>
<title>D.Ali KARATAŞ – Kelime, Hece, Harf Sayıcı Programı</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<script type=”text/javascript” src=”jquery.min.js”></script>
<script type=”text/javascript”>

function kelimeSayisi(icerik) {
var alfabem = /^[a-zA-ZÂâÎîİıÇ窺ÜüÖöĞğ]/;
var kelimeSayisi = 0;

for (var i = 0; i < icerik.length-1; i++) {
if (icerik[i].match(alfabem) && !icerik[i+1].match(alfabem))
kelimeSayisi++;
};

// Son karakterim istediğim kelimeler ile mi bitiyor.
if (icerik[icerik.length-1].match(alfabem))
kelimeSayisi++;

return kelimeSayisi;
}

function heceSayisi(icerik) {
var sesliHarfler = ‘AaÂâEeIıİiÎîOoÖöUuÜü’;
var heceSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(sesliHarfler.indexOf(icerik[i]) > -1)
heceSayisi++;

return heceSayisi;
}

function harfSayisi(icerik) {
var alfabem = /^[a-zA-ZÂâÎîİıÇ窺ÜüÖöĞğ]/;
var harfSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(icerik[i].match(alfabem))
harfSayisi++;

return harfSayisi;
}

function rakamSayisi(icerik) {
var rakamlarim = ‘0123456789’;
var rakamSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(rakamlarim.indexOf(icerik[i]) > -1)
rakamSayisi++;

return rakamSayisi;
}

function noktalamaSayisi(icerik) {
var noktalamalarim = “‘.,:;!?-‘”;
var noktalamaSayisi = 0;

for (var i = 0; i < icerik.length; i++)
if(noktalamalarim.indexOf(icerik[i]) > -1)
noktalamaSayisi++;

return noktalamaSayisi;
}

///////////////////////// SAYI DÖNÜŞTÜRME FONKSİYONU —— BAŞLA

function SayiDonustur(sayi){

var rakamlarim = String(sayi);

var bolum1 = [“”, “bir”, “iki”, “üç”, “dört”, “beş”, “altı”, “yedi”, “sekiz”, “dokuz”];
var bolum2 = [“”, “on “, “yirmi “, “otuz “, “kırk “, “elli “, “altmış “, “yetmiş “, “seksen “, “doksan “];
var bolum3 = [“”, “yüz “, “bin “, “milyon “, “milyar “, “trilyon “, “katrilyon “];

var sonuc = “”; // SONUÇ değişkenime Yazıyı ekleyerek Yazıyorum.

var son;
var basamak = 1; // işlenen basamak
var kac = rakamlarim.length; // kaç rakam var?
var sonRakam; // işlenen basamağın rakamsal değeri

for (i = 0; i < kac; i++)
{
son = rakamlarim[kac – 1 – i]; // son karakterden başlayarak çözümleme yapıyoruz.
sonRakam = parseInt(son); // İşleme giren Rakam

if (basamak == 1)
{ // birinci basamak bulunuyor
sonuc = bolum1[sonRakam] + sonuc;
}

else if (basamak == 2)
{ // ikinci basamak
sonuc = bolum2[sonRakam] + sonuc;
}

else if (basamak == 3)
{ // 3. basamak
if (sonRakam == 1)
{
sonuc = bolum3[1] + sonuc;
}
else if (sonRakam > 1)
{
sonuc = bolum1[sonRakam] + bolum3[1] + sonuc;
}
}

else if (basamak == 4)
{ // 4. basamak
if (sonRakam == 1)
{
sonuc = bolum3[2] + sonuc;
}
else if (sonRakam > 1)
{
sonuc = bolum1[sonRakam] + bolum3[2] + sonuc;
}
}

basamak++; // Basamak değerini arttır
}

return sonuc;
}

///////////////////////// SAYI DÖNÜŞTÜRME FONKSİYONU —— BİTİŞ

$(document).ready(function()
{
console.log(“doc ready”);

$(hesapla).click(function(){
console.log(“doc ready”, $(‘#icerik’).val());
var icerik = $(‘#icerik’).val();
$(‘span.harfSonuc’).html(harfSayisi(icerik));
$(‘span.heceSonuc’).html(heceSayisi(icerik));
$(‘span.kelimeSonuc’).html(kelimeSayisi(icerik));
$(‘span.rakamSonuc’).html(rakamSayisi(icerik));
$(‘span.noktalamaSonuc’).html(noktalamaSayisi(icerik));

$(‘span.harfSonucYazi’).html(SayiDonustur(harfSayisi(icerik)));
$(‘span.heceSonucYazi’).html(SayiDonustur(heceSayisi(icerik)));
$(‘span.kelimeSonucYazi’).html(SayiDonustur(kelimeSayisi(icerik)));
});

});

</script>
<style type=”text/css”>
body {

background-color: #30486D;
max-width: 1200px;
margin: 40px auto;
font: normal 16px/1.5 “Montserrat”, “Helvetica Neue”, sans-serif;
color: #37474f;

}
h1{
text-align: center;
margin: 20px 10px;
color: #95C718;
}
textarea{
display: block;
width: 100%;
min-height: 100px;
font-family: Verdana, Geneva, sans-serif;
}
#hesapla{
width: 100%;
height: 50px;
font-size: 14px;
}
.sonuc{
display: block;
}
.girdiKutusu, .ekranCiktisi{
background-color: #fff;

border-radius: 5px;
padding: 30px 15px;
margin: 10px;
}

.sonucEkrani {
color: #DD4B3E;
font-weight: bold;
}

</style>
</head>
<body>
<h1>jQuery ile Kelime, Hece, Harf Sayısı Hesaplama Programı</h1>
<div class=”girdiKutusu”>
<label for=”icerik”>Metni Bu Alana Yazınız</label>
<textarea id=”icerik”>
Örnek metin.</textarea>
<button id=”hesapla”>Hesaplama İşlemini Başlat</button>
</div>
<div class=”ekranCiktisi”>
Yukarıda gimiş olduğunuz cümlede <span class=”sonucEkrani harfSonucYazi”></span> adet HARF, <span class=”sonucEkrani heceSonucYazi”></span> adet HECE ve <span class=”sonucEkrani kelimeSonucYazi”></span> adet KELİME bulunmaktadır.
<p>
<b>Rakamsal Gösterim :</b>

<span class=”sonuc harf”>Harf Sayısı: <span class=”sonucEkrani harfSonuc”></span></span>
<span class=”sonuc hece”>Hece Sayısı: <span class=”sonucEkrani heceSonuc”></span></span>
<span class=”sonuc kelime”>Kelime Sayısı: <span class=”sonucEkrani kelimeSonuc”></span></span>
<span class=”sonuc kelime”>Rakam Sayısı: <span class=”sonucEkrani rakamSonuc”></span></span>
<span class=”sonuc kelime”>Noktalama İşaretleri Sayısı: <span class=”sonucEkrani noktalamaSonuc”></span></span>
</div>

</body>
</html>

Yazar Hakkında: Ali KARATAŞ

Gazi Üniversitesi Bilgisayar Sistemleri Öğretmenliği 2012 Mezunu, Flash Animasyon, Dinamik web sitesi , Flash Eğitsel Oyun Tasarımı alanlarında kendini geliştirmiş. Yamaç paraşütü, Kickbox, Sualtı, Rafting, Dağcılık, İzcilik, Kayak Sporlarıyla ilgilenen, Kendini geliştirmeye her zaman açık Boğa Burcuna sahip bir kişi :)

Yorumlar