Le parsing, dans la classe que je te transmet ci-dessous, se fait sur base du caractère d'espacement. A toi de modifier le code pour permettre de parser le texte sur base d'autres caractères de délimitation ( le point, le point virgule, l'apostrophe,...)
package wordCounter;
import java.io.*;
import java.util.*;
/**
*
* @author HackTrack
* @version 1.0
*/
public class WordCounter {
private StringBuffer text;
private HashMap occurencesMap;
public WordCounter() {
occurencesMap = new HashMap();
}
public HashMap countOccurences(String filePath){
try{
BufferedReader reader = new BufferedReader(new FileReader(filePath));
text = new StringBuffer();
String line="";
while((line=reader.readLine())!=null){
text.append(line);
}
}catch(FileNotFoundException fnfe){
System.out.println("This file does't exist !");
}catch(IOException ioe){
System.out.println("Error while reading file !");
}
return parseText(text);
}
private HashMap parseText(StringBuffer text){
occurencesMap = new HashMap();
StringTokenizer tokenizer = new StringTokenizer(text.toString()," ");
while(tokenizer.hasMoreTokens()){
String aWord = tokenizer.nextToken().toUpperCase();
if(occurencesMap.containsKey(aWord)){
Integer occurences = (Integer)occurencesMap.get(aWord);
occurences = new Integer(occurences.intValue()+1);
occurencesMap.put(aWord,occurences);
}else{
occurencesMap.put(aWord.toUpperCase(),new Integer(1));
}
}
showOccurences();
return occurencesMap;
}
private void showOccurences(){
Set keySet = occurencesMap.keySet();
List list = new ArrayList(keySet);
Collections.sort(list);
for(int i=0 ; i<list.size() ; i++){
String aWord = (String)list.get(i);
Integer occurences = (Integer)occurencesMap.get(aWord);
System.out.println(aWord +": "+ occurences + " occurences");
}
}
public HashMap getOccurencesMap(){
return occurencesMap;
}
public static void main(String args[]) {
WordCounter counter = new WordCounter();
counter.countOccurences("C:/test2.txt");
}
}
;-)