Javada String Sorusu
-
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()); } }
-
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 ?
-
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ı
-
Burdaki kodu çalıştırıyorsun galiba, \\b leri kaldırıp dener misin ?
-
SpArK bunu yazdı
Burdaki kodu çalıştırıyorsun galiba, \\b leri kaldırıp dener misin ?
Keyword found 3
Sonuç aynı hocam.
-
SpArK bunu yazdı
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.
-
u235 bunu yazdıSpArK bunu yazdı
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 :/
-
SpArK bunu yazdıu235 bunu yazdıSpArK bunu yazdı
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ı.
-
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.
-
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 -
http://examples.javacodegeeks.com/core-java/util/regex/word-frequency-count-example/
https://sites.google.com/site/oopcourse2011/lectures/week-3-labs // burda altlarda word frequency count
http://introcs.cs.princeton.edu/java/42sort/FrequencyCount.java.html
http://www.daniweb.com/software-development/java/threads/64045/word-frequency-counter-help
http://in.answers.yahoo.com/question/index?qid=20101227073848AAJBl9y
http://www.roseindia.net/tutorial/java/core/countFequencyOfWords.html
http://javabycode.blogspot.com/2010/12/word-frequency-counter.html
http://stackoverflow.com/questions/3139633/word-frequency-counter
http://answers.yahoo.com/question/index?qid=20090514231531AAvsdGU
Bence o kodu bırakıp kendi kodunu yaz, şeyhin dediği gibi girilen text i split yaparsın boşluk karakteriyle, böylece elinde kelimeler array i olur, kellimeler arrayini dönerken de, aradığın string o her kelimenin içinde geçiyor mu diye sayarsın vs vs. Üstte de örnek linkler verdim faydalanmak için, Java Word Frequency diye arattım.