Ottieni il conteggio parole di una stringa in Java

Rupam Yadav 12 ottobre 2023
  1. Usa StringTokenizer per contare le parole in una stringa in Java
  2. Utilizzare split() ed espressioni regolari per contare le parole in una stringa in Java
  3. Ottieni il numero di volte in cui una parola viene ripetuta in una stringa in Java
Ottieni il conteggio parole di una stringa in Java

In questo articolo, faremo luce su come contare il numero di parole in una stringa in Java e sui diversi modi per ottenerlo.

Usa StringTokenizer per contare le parole in una stringa in Java

La classe StringTokenizer in Java ci consente di suddividere una stringa in più token. I metodi in questa classe non distinguono tra stringhe, identificatori e numeri tra virgolette, né riconoscono o ignorano i commenti. I caratteri che separano i token (delimitatori) possono essere specificati al momento della creazione o in base al token.

La classe StringTokenizer non conta automaticamente gli spazi e le tabulazioni, quindi viene gestita da 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));
  }
}

Produzione:

Word count without delimiter: 6
Word count: 4

Qui, abbiamo creato stringTokenizer1 passando una stringa nel costruttore, prende il delimitatore predefinito mentre per stringTokenizer2 viene passato un delimitatore personalizzato per separare i token. Il primo approccio conta i trattini mentre il secondo no.

Utilizzare split() ed espressioni regolari per contare le parole in una stringa in Java

Il metodo split(String regex) in Java accetta un’espressione regolare e spezza la stringa data che corrisponde all’espressione regolare e restituisce un array di stringhe.

L’espressione regolare che usiamo qui è \\s+ che separa lo spazio bianco dalla stringa o in altre parole divide la stringa data intorno allo spazio bianco. Il numero di parole nella stringa è uguale alla lunghezza dell’array di stringhe words che possiamo ottenere chiamando length su di esso. L’output mostra il numero di parole in 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);
  }
}

Produzione:

Word Count is: 7

Ottieni il numero di volte in cui una parola viene ripetuta in una stringa in Java

Possiamo calcolare il numero di volte che una parola viene ripetuta nella stringa data. Qui randomText è una stringa in cui dobbiamo trovare quante volte viene ripetuta la parola blue. Per questo, prendiamo una variabile times di tipo int e la inizializziamo a 0. Eseguiamo un cicli for da 0 alla lunghezza di randomText.

Il metodo startsWith() confronta se la stringa inizia con i caratteri della stringa data. Per i = 0 il metodo randomText.substring(0) ottiene una sottostringa all’indice 0 e controlla se startsWith("blue") e se corrisponde, incrementerà times di 1; altrimenti non aumenterà.

Allo stesso modo, controlla il resto della lunghezza e stampa il numero di volte in cui la parola è stata ripetuta nella stringa data come output.

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");
  }
}

Produzione:

The sky is blue it meets the sea which is also blue contains blue 2 times
Autore: Rupam Yadav
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

Articolo correlato - Java String