/** * * @author Jose * @version 1.0 * */ public class MyStringTokenizer { String separadores; java.util.ArrayList tokens; public MyStringTokenizer(String initialCadena, String initialSeparadores) { String cadena = initialCadena; separadores = initialSeparadores; tokens = new java.util.ArrayList(); int numDeCaracteres = cadena.length(); int posicion = 0; String token; char car; while(posicion <= numDeCaracteres-1) { // mientras haya caracteres que procesar token = ""; car = cadena.charAt(posicion); while( !Pertenece(car) && (posicion <= numDeCaracteres-1) ) { token = token + car; posicion++; if ( posicion <= numDeCaracteres-1 ) { car = cadena.charAt(posicion); // Es posible obtener un caracter } } tokens.add(token); // salvar el token(palabra) en la colección if ( Pertenece(car)) { // Si es cierto que pertenece a los separadores while ( Pertenece(car) ) { posicion++; if ( posicion <= numDeCaracteres-1 ) { car = cadena.charAt(posicion); // Es posible obtener un caracter } else { car = '^'; // el caracter 'a' no pertenece a los separadores } } // while } } // while } // Fin del constructor private boolean Pertenece(char car) { for(int i=0; i < separadores.length(); i++) { if ( car == separadores.charAt(i)) { return true; } } return false; } public String siguienteToken() { String token = tokens.get(0); tokens.remove(0); return token; } public int numeroDeElementos() { return tokens.size(); } public boolean tieneTokens() { return tokens.isEmpty(); } } // Fin de la clase MyStringTokenizer ----------------------------------------------------------------------------------------------- /** * * @author Jose * @version 1.0 * */ import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class PruebaMyStringTokenizer { public static void main(String[] a) throws java.io.IOException { File archivo = new File("Prueba.txt");//"archivo.txt" es el archivo que va a leer String linea; FileReader entrada = new FileReader (archivo); BufferedReader br = new BufferedReader(entrada); MyStringTokenizer tokenizador; int elementos; System.out.flush(); linea=br.readLine(); tokenizador = new MyStringTokenizer(linea," .,;:_"); elementos = tokenizador.numeroDeElementos(); System.out.println("La frase en palabras es :"); for ( int i = 1; i <= elementos; i++) { System.out.println("Palabra [" + i + "] :" + tokenizador.siguienteToken()); } try { File archivo1 = new File("Prueba.txt"); String linea1; FileReader entrada1 = new FileReader (archivo1); BufferedReader br1 = new BufferedReader(entrada1); int a1 = 0; int i = 0; while ((linea1=br1.readLine())!=null) { for (i = 0; i < linea1.length() ; i++) { if (i==0) { if (linea1.charAt(i) != ' ') a1++; } else { if(linea1.charAt(i-1) == ' ') if(linea1.charAt(i) != ' ') a1++; } } } System.out.println("Número total de palabras: " +a1); entrada1.close(); } catch(IOException a1) { } } // Fin de main } // Fin de la clase PruebaMyStringTokeniz