5.00 / 1 oy

Java'da bir yazı içinde başka bir yazı kaç kere geçiyor saydırmak

Başlıkta sınırlı karakterde anlatmaya çalıştıysam da burada daha anlamlı bir açıklama yazabilirim. Önceki hazırladığım örneklerde bir yazı (string) içinde bir char'ın ilk ve son kez kaçıncı sırada geçtiği ile bir yazı (string) içinde başka bir yazının (string) ilk ve son kez kaçıncı sırada geçtiğini bulmamızı sağlayan Java fonksiyonlarını göstermiştim. Her iki fonksiyon da aradığımız kelimelerin geçmesi durumunda ilgili sıraları, hiç geçmemesi durumunda da -1 tamsayısını döndürüyorlardı. Peki bir yazı (string) içinde bir char'ın ya da bir yazı (string) içinde başka bir yazının (string) kaç kere geçtiğini nasıl hesaplayabiliriz? Bu sayım işlemini Java'da hazır olarak yapan bir fonksiyon olmadığı için kendi fonksiyonumuzu yine kendimiz yazacağız.

İlk önce bir kelime ya da cümle olan bir metin (string) içinde bir harfin kaç kere geçtiğini sayan bir metod yazalım ve Merhabalar kelimesi içinde sırayla a, i ve e harflerinin kaç kere geçtiğini saydıralım.

public static void main(String [] args) {

  String yazi = "Merhabalar";
  System.out.println(HarfSay(yazi,'a')); //3
  System.out.println(HarfSay(yazi,'i')); //0
  System.out.println(HarfSay(yazi,'e')); //1
 
}
	 
 public static int HarfSay (String metin, char harf)
 {
     int sayi = 0;

     for (int i=0; i < metin.length(); i++)
     {    if(metin.charAt(i) == harf)
    	 sayi++;
     }

     return sayi;
 }
 
}

Şimdi de bir String içerisinde başka bir String'in kaç kere geçtiğini sayan bir metod kodlayalım ve "Bir internet var benden içeri kocaman internet her yer internet" cümlesinde internet kelimesi kaç kere tekrar ediyormuş saydıralım. Bu soruyu regex ile daha kolay çözebilirdik ama algoritma olarak zorlayıcı olduğu için uzun yoldan kodlamak bence daha güzel bir alıştırma olduğundan bu şekilde paylaşmak istiyorum.

public static void main(String [] args) {
String yazi = "Bir internet var benden içeri kocaman internet her yer internet";
System.out.println(KelimeSay(yazi,"internet")); //3
}

public static int KelimeSay (String metin, String kelime)
{
return metin.split(kelime, -1).length-1;
}

kelimeSay metoduna bir açıklama da yapalım ki noluyor burada diyenler olmasın. Bu problemin bir çözümü, metin ile kelimeyi birer vektör gibi düşünüp kelime'nin metin içinde tam olarak kaç kere geçtiğini 2 döngü içinde saydırmak olabilir. Ancak daha kolay olan ve yukarıda paylaştığım tek satırlık çözümde şu oluyor: Daha önce paylaştığım String.split fonksiyonunda bir String'i içinde geçen boşluk ya da virgül gibi harf ya da kelimelere göre ayırarak vektör elemanlarına dönüştürebiliyorduk. length ise bir vektörün eleman sayısını döndürüyor ancak arama sonucu 0 olursa bile elimizde tek elemanlık bir vektör olacağı için en son değerden -1 çıkartmamız gerekiyor. Dönen sonuç da tamsayı olarak kelime içinde başka bir kelimenin kaç kez geçtiğini hesaplamış oluyor.

utku33

14.01.2020 03:15

Bu soru henüz yanıtlanmamış.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Java'da bir yazı içinde başka bir yazı kaç kere geçiyor saydırmak

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.