Separar palabras de una frase en Java

Estándar

Muchas veces nos vemos en la necesidad de separar una frase en palabras, para así poder comprobar con algún diccionario su correcta escritura, si son o no malas palabras, entre otros.

Java, por su parte, provee de muchas funciones para el tratamiento de esto. Dentro de ellas, podemos encontrar el método split de la clase String. También podemos hacerlo con expresiones regulares. Pero la verdad es que para los que somos principiantes en Java, nos es muy difícil conocer todo esto.

Es por ello, que aquí presento una forma simple de separar una frase en palabras, teniendo en cuenta las peculiaridades de una frase, y además pensando que la frase no contiene espacios por delante y por detrás. Si alguien logra mejorar esto, por favor publicarlo en los comentarios 🙂

package vectores;

import java.util.Scanner;

/**
 * Clase para separar palabras de una frase.
 * @author Bryan Horna <bryanjhv@gmail.com>
 *
 */
public class Separar {
	
	static Scanner sc = new Scanner(System.in); // El Scanner
	
	/**
	 * Separa la frase en palabras.
	 * @param s La cadena a separar.
	 * @return Cadena en partes.
	 */
	public static String[] separarFrase(String s) {
		int cp = 0; // Cantidad de palabras
		
		// Recorremos en busca de espacios
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) == ' ') { // Si es un espacio
				cp++; // Aumentamos en uno la cantidad de palabras
			}
		}
		
		// "Este blog es genial" tiene 3 espacios y 3 + 1 palabras
		String[] partes = new String[cp + 1];
		for (int i = 0; i < partes.length; i++) {
			partes[i] = ""; // Se inicializa en "" en lugar de null (defecto)
		}
		
		int ind = 0; // Creamos un índice para las palabras
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) == ' ') { // Si hay un espacio
				ind++; // Pasamos a la siguiente palabra
				continue; // Próximo i
			}
			partes[ind] += s.charAt(i); // Sino, agregamos el carácter a la palabra actual
		}
		return partes; // Devolvemos las partes
	}
	
	public static void main(String[] args) {
		
		System.out.print("Ingrese una frase: ");
		String frase = sc.nextLine(); // Guardamos la frase o texto
		
		String[] p = separarFrase(frase); // Separamos palabras
		
		for (int i = 0; i < p.length; i++) {
			System.out.println("Parte " + (i + 1) + ": " + p[i]); // Mostramos
		}
		
	}
	
}

Como siempre, puedes descargar este código completo desde aquí.

Anuncios

¿Y tú qué opinas?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s