Obtenir le nombre de mots d'une chaîne en Java

Rupam Yadav 12 octobre 2023
  1. Utilisez StringTokenizer pour compter les mots dans une chaîne en Java
  2. Utilisez split() et une expression régulière pour compter les mots dans une chaîne en Java
  3. Obtenir le nombre de répétitions d’un mot dans une chaîne en Java
Obtenir le nombre de mots d'une chaîne en Java

Dans cet article, nous allons vous expliquer comment compter le nombre de mots dans une chaîne en Java et les différentes manières d’y parvenir.

Utilisez StringTokenizer pour compter les mots dans une chaîne en Java

La classe StringTokenizer en Java nous permet de diviser une chaîne en plusieurs jetons. Les méthodes de cette classe ne font pas de distinction entre les chaînes, identificateurs et nombres entre guillemets, et ne reconnaissent ni ignorent les commentaires. Les caractères qui séparent les jetons (délimiteurs) peuvent être spécifiés soit au moment de la création, soit sur une base par jeton.

La classe StringTokenizer ne compte pas automatiquement les espaces et les tabulations donc elle est gérée seule.

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

Production:

Word count without delimiter : 6 Word count : 4

Ici, nous avons créé stringTokenizer1 en passant une chaîne dans le constructeur, il prend le délimiteur par défaut alors que pour stringTokenizer2 le délimiteur personnalisé pour séparer les jetons est passé. La première approche compte les tirets tandis que la seconde ne le fait pas.

Utilisez split() et une expression régulière pour compter les mots dans une chaîne en Java

La méthode split(String regex) en Java prend une expression régulière et casse la chaîne donnée correspondant à l’expression régulière et retourne un tableau de chaînes.

L’expression régulière que nous utilisons ici est \\s+ qui sépare l’espace blanc de la chaîne ou en d’autres termes, elle divise la chaîne donnée autour d’un espace blanc. Le nombre de mots dans la chaîne est égal à la longueur du tableau de chaînes words que l’on peut obtenir en appelant length dessus. La sortie affiche le nombre de mots dans 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);
  }
}

Production:

Word Count is: 7

Obtenir le nombre de répétitions d’un mot dans une chaîne en Java

Nous pouvons calculer le nombre de fois qu’un mot est répété dans la chaîne donnée. Ici randomText est une chaîne dans laquelle nous devons trouver combien de fois le mot blue est répété. Pour cela, nous prenons une variable times de type int et l’initialisons à 0. Lancez une boucle for de 0 à la longueur du randomText.

La méthode startsWith() compare si la chaîne commence par les caractères de la chaîne donnée. Pour i = 0, la méthode randomText.substring(0) obtient la sous-chaîne à l’index 0 et vérifie si elle startsWith("blue") et si elle correspond alors elle incrémentera times de 1; sinon, il n’augmentera pas.

De même, il vérifie le reste de la longueur et imprime le nombre de fois que le mot a été répété dans la chaîne donnée en sortie.

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

Production:

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

Article connexe - Java String