folder Tahribat.com Forumları
linefolder Java
linefolder Javada String Sorusu



Javada String Sorusu

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    u235
    u235's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    Benim şimdi yapmam gereken bir cümle içinde belirtilen keyword kaç tane var.Mesela " Ali iyi Ali akıllı Ali ata bak".Bu cümlede kaç tane "ali" kelimesi var sayacak.

    Daha basit olarak yapılabilirsede söyleyin.

    Ben bir tane götürdüm hocaya "ali" şeklinde düzgün sayarken hoca "ali." yapınca program düzgün saymadı.İnternetten bulmuştum onuda.

    2 class var 1.class

     

    public class IndexWrapper {
     
        private int start;
        private int end;
     
        public IndexWrapper(int start, int end) {
            this.start = start;
            this.end = end;
        }
     
        public int getEnd() {
            return end;
        }
     
        public int getStart() {
            return start;
        }
     
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + end;
            result = prime * result + start;
            return result;
        }
     
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            IndexWrapper other = (IndexWrapper) obj;
            if (end != other.end)
                return false;
            if (start != other.start)
                return false;
            return true;
        }
     
    }

     

     

    Burasıda ikinci class

     

    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class whole {
     
        private String searchString;
     
        public whole(String searchString) {
            this.searchString = searchString;
        }
     
        public List<IndexWrapper> findIndexesForKeyword(String keyword) {
            String regex = "\\b"+keyword+"\\b";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(searchString);
     
            List<IndexWrapper> wrappers = new ArrayList<IndexWrapper>();
     
            while(matcher.find() == true){
                int end = matcher.end();
                int start = matcher.start();
                IndexWrapper wrapper = new IndexWrapper(start, end);
                wrappers.add(wrapper);
            }
            return wrappers;
        }
     
        public static void main(String[] args) {
            whole finder = new whole ("Ali good Ali smart Ali look at the horse");
            List<IndexWrapper> indexes = finder.findIndexesForKeyword("Ali.");
            System.out.println("Keyword found "+indexes.size());
        }
    }


  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek
    u235 bunu yazdı
        public static void main(String[] args) {
            whole finder = new whole ("Ali good Ali smart Ali look at the horse");
            List indexes = finder.findIndexesForKeyword("Ali.");
            System.out.println("Keyword found "+indexes.size());
        }
    }


    Tamam da "Ali good Ali smart Ali look at the horse"'ın içinde "Ali." yok, yani sonucun 0 dönmesi lazım ? Hoca findIndexesForKeyword fonksiyonu içindeki Ali yi Ali. yapıp mı denedi ve program yanlış hesapladı ki bu normal bir davranış gözüküyor ? 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    u235
    u235's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
    SpArK bunu yazdı
    u235 bunu yazdı
        public static void main(String[] args) {
            whole finder = new whole ("Ali good Ali smart Ali look at the horse");
            List indexes = finder.findIndexesForKeyword("Ali.");
            System.out.println("Keyword found "+indexes.size());
        }
    }


    Tamam da "Ali good Ali smart Ali look at the horse"'ın içinde "Ali." yok, yani sonucun 0 dönmesi lazım ? Hoca findIndexesForKeyword fonksiyonu içindeki Ali yi Ali. yapıp mı denedi ve program yanlış hesapladı ki bu normal bir davranış gözüküyor ? 

    Hacı "Ali." yapınca 3 olarak saydı

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek

    http://whyjava.wordpress.com/2010/05/04/finding-all-the-indexes-of-a-whole-word-in-a-given-string-using-java/

    Burdaki kodu çalıştırıyorsun galiba, \\b leri kaldırıp dener misin ?

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    u235
    u235's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
    SpArK bunu yazdı

    http://whyjava.wordpress.com/2010/05/04/finding-all-the-indexes-of-a-whole-word-in-a-given-string-using-java/

    Burdaki kodu çalıştırıyorsun galiba, \\b leri kaldırıp dener misin ?

    Keyword found 3

    Sonuç aynı hocam.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    u235
    u235's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
    SpArK bunu yazdı

    http://whyjava.wordpress.com/2010/05/04/finding-all-the-indexes-of-a-whole-word-in-a-given-string-using-java/

    Burdaki kodu çalıştırıyorsun galiba, \\b leri kaldırıp dener misin ?

    Çalıştı hocam şimdi düzgün çalışıyor.Çok sağolasın.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek
    u235 bunu yazdı
    SpArK bunu yazdı

    http://whyjava.wordpress.com/2010/05/04/finding-all-the-indexes-of-a-whole-word-in-a-given-string-using-java/

    Burdaki kodu çalıştırıyorsun galiba, \\b leri kaldırıp dener misin ?

    Keyword found 3

    Sonuç aynı hocam.

    Tek backslash ile dener misin \b  birde \B ile, pek regex bilgim olmadığından biraz deneme yanılma oluyor :/

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    u235
    u235's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
    SpArK bunu yazdı
    u235 bunu yazdı
    SpArK bunu yazdı

    http://whyjava.wordpress.com/2010/05/04/finding-all-the-indexes-of-a-whole-word-in-a-given-string-using-java/

    Burdaki kodu çalıştırıyorsun galiba, \\b leri kaldırıp dener misin ?

    Keyword found 3

    Sonuç aynı hocam.

    Tek backslash ile dener misin \b  birde \B ile, pek regex bilgim olmadığından biraz deneme yanılma oluyor :/

    oldu hocam " " diye araya boşluk bırakınca çalıştı.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    u235
    u235's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    Ya adam yine kontrol etti şimdi kelimelerin arasına 2 boşluk bırakınca düzgün saymıyor ayrıca "Alig" falan gibi sonradan bir harf ekleyince sonuna yine doğru saymıyor.

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    hocam java falza bilmiyorum ama split benzeri fonksiyon illa ki vardır.

    c# da şöyle yapardım sen javaya uyarla

    int kactane = "Ali iyi Ali akıllı Ali ata bak Ali.".Split(new char[] { ' ', '\t', '.', ',', ';', '/', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Count(  delegate(string word) { return word.Equals("Ali", StringComparison.InvariantCultureIgnoreCase); });
    HolyOne tarafından 27/May/13 10:29 tarihinde düzenlenmiştir

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek
Toplam Hit: 2049 Toplam Mesaj: 11