Obtener el recuento de palabras de una cadena en Java

Rupam Yadav 12 octubre 2023
  1. Utilice StringTokenizer para contar palabras en una cadena en Java
  2. Utilice split() y expresiones regulares para contar palabras en una cadena en Java
  3. Obtener el número de veces que se repite una palabra en una cadena en Java
Obtener el recuento de palabras de una cadena en Java

En este artículo, vamos a arrojar algo de luz sobre cómo contar la cantidad de palabras en una cadena en Java y las diferentes formas de lograrlo.

Utilice StringTokenizer para contar palabras en una cadena en Java

La clase StringTokenizer en Java nos permite dividir una cadena en múltiples tokens. Los métodos de esta clase no diferencian entre cadenas entre comillas, identificadores y números, ni reconocen ni omiten comentarios. Los caracteres que separan los tokens (delimitadores) pueden especificarse en el momento de la creación o por token.

La clase StringTokenizer no cuenta los espacios en blanco y las pestañas automáticamente, por lo que se maneja por sí sola.

import java.util.StringTokenizer;
public class WordCount {
  public static void main(String args[]) {
    String mydelim = " - ";
    String myString = "The  sky - - is blue!";
    StringTokenizer stringTokenizer1 = new StringTokenizer(myString);
    StringTokenizer stringTokenizer2 = new StringTokenizer(myString, mydelim);

    int tokensCount1 = stringTokenizer1.countTokens();
    int tokensCount2 = stringTokenizer2.countTokens();

    System.out.println("Word count without delimiter: " + String.valueOf(tokensCount1));
    System.out.println("Word count: " + String.valueOf(tokensCount2));
  }
}

Producción :

Word count without delimiter: 6
Word count: 4

Aquí, hemos creado stringTokenizer1 pasando una cadena en el constructor, toma un delimitador predeterminado mientras que para stringTokenizer2 se pasa un delimitador personalizado a tokens separados. El primer método cuenta los guiones, mientras que el segundo no.

Utilice split() y expresiones regulares para contar palabras en una cadena en Java

El método split(String regex) en Java toma una expresión regular y rompe la cadena dada que coincide con la expresión regular y devuelve un array de cadenas.

La expresión regular que usamos aquí es \\s+ que separa el espacio en blanco de la cadena o, en otras palabras, divide la cadena dada entre espacios en blanco. El número de palabras en la cadena es igual a la longitud del array de cadenas palabras que podemos obtener llamando a length. La salida muestra el número de palabras en myStr.

public class WordCount {
  public static void main(String args[]) {
    String myStr = "the butcher's wife, she was from Montreal";
    String[] words = myStr.split("\\s+");
    System.out.println("Word Count is: " + words.length);
  }
}

Producción :

Word Count is: 7

Obtener el número de veces que se repite una palabra en una cadena en Java

Podemos calcular el número de veces que se repite una palabra en la cadena dada. Aquí, randomText es una cadena en la que necesitamos encontrar cuántas veces se repite la palabra blue. Para ello, tomamos una variable times de tipo int y la inicializamos a 0. Ejecutamos un bucle for desde 0 hasta la longitud del randomText.

El método startsWith() compara si la cadena comienza con los caracteres de la cadena dada. Para i = 0 el método randomText.substring(0) obtiene una subcadena en el índice 0 y comprueba si startsWith("blue") y si coincide, incrementará times en 1; de lo contrario, no aumentará.

De manera similar, verifica el resto de la longitud e imprime el número de veces que se repitió la palabra en la cadena dada como salida.

public class WordCount {
  public static void main(String args[]) {
    String randomText = "The sky is blue it meets the sea which is also blue";

    String text = "blue";
    int times = 0;
    for (int i = 0; i < randomText.length(); i++) {
      if (randomText.substring(i).startsWith(text)) {
        times++;
      }
    }
    System.out.println(randomText + " contains " + text + " " + times + " times");
  }
}

Producción :

The sky is blue it meets the sea which is also blue contains blue 2 times
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java String