Convertir une chaîne en tableau int en Java

Rashmi Patidar 15 février 2024
  1. Convertir une chaîne en tableau int en utilisant la méthode replaceAll()
  2. Convertir une chaîne en tableau int à l’aide de la bibliothèque Stream de Java 8
  3. Convertir une chaîne en tableau int à l’aide de StringTokenizer et de fonctions
Convertir une chaîne en tableau int en Java

Dans le langage Java, il peut y avoir plusieurs approches pour réfléchir à l’énoncé du problème.

Décomposons d’abord l’énoncé du problème en deux parties.

  1. Convertissez une chaîne simple en tableau de chaînes.
  2. Convertissez un tableau String en tableau int.

Voici la représentation schématique des deux étapes ci-dessus:

chaîne d’organigramme en int en Java

Convertir une chaîne en tableau int en utilisant la méthode replaceAll()

On peut utiliser la méthode replaceAll() de la classe String qui prend deux arguments, les valeurs regex et replacement. Cette méthode remplacera l’expression régulière donnée par la valeur de remplacement donnée. Et à la fin des fonctions de la chaîne, la méthode split() est utilisée. Cette méthode divise la chaîne en fonction du caractère donné.

Nous devrions utiliser la fonction Integer.parseInt() lorsque les valeurs sont fractionnées et collectées dans un tableau String. Puisque la méthode parseInt() lance NumberFormatException, l’instruction doit donc être dans un bloc try...catch pour intercepter éventuellement l’exception.

Voici l’exemple de programme pour illustrer la conversion de chaînes en tableau int:

package stringToIntArray;

import java.util.Arrays;

public class ConvertStringToIntArray {
  public static void main(String... args) {
    String testString = "[1,2,356,678,3378]";

    String[] separatedStrings = testString.replaceAll("\\[", "").replaceAll("]", "").split(",");

    int[] intArray = new int[separatedStrings.length];

    for (int i = 0; i < separatedStrings.length; i++) {
      try {
        intArray[i] = Integer.parseInt(separatedStrings[i]);
      } catch (Exception e) {
        System.out.println("Unable to parse string to int: " + e.getMessage());
      }
    }

    System.out.println(Arrays.toString(intArray));
  }
}

Production:

[1,2,356,678,3378]

Si testString a la valeur [1,2,356,678,3378,f], il lancera une exception, et la sortie ressemblera à ceci.

Unable to parse string to int: For input string: "f"
[1, 2, 356, 678, 3378, 0]

Convertir une chaîne en tableau int à l’aide de la bibliothèque Stream de Java 8

Dans le programme ci-dessous, nous avons d’abord utilisé la fonction Arrays.stream(). Pour fournir un flux à cela, nous avons utilisé la méthode substring() de la classe String, qui prend les premier et dernier paramètres d’index. Sur la chaîne renvoyée, la fonction split() est appliquée, qui divise la chaîne donnée en fonction d’un délimiteur.

Sur le flux, la fonction map() est appliquée. Cette fonction prend n’importe quelle fonction comme argument et renvoie le flux. Nous avons donné la fonction trim() de la classe String qui a éliminé les espaces blancs de début et de suite. parseInt transforme la chaîne donnée reçue en int. toArray() vide les éléments int convertis dans un tableau.

package stringToIntArray;

import java.util.Arrays;

public class StringToIntUsingJava
8Stream {
  public static void main(String[] args) {
    String str = "[1, 2, 3, 4, 5]";

    int[] arr = Arrays.stream(str.substring(1, str.length() - 1).split(","))
                    .map(String::trim)
                    .mapToInt(Integer::parseInt)
                    .toArray();

    System.out.println(Arrays.toString(arr));
  }
}

Production:

[1, 2, 3, 4, 5]

Convertir une chaîne en tableau int à l’aide de StringTokenizer et de fonctions

Instanciez l’objet StringTokenizer en utilisant son constructeur StringTokenizer(). Le constructeur prend la chaîne d’entrée et le délimiteur pour former une chaîne à jetons. Créez simultanément un tableau de String et int avec une taille en tant que jetons dans le String tokenisé.

La méthode countTokens() compte les jetons, ce qui ignore le délimiteur en interne. hasMoreTokens() vérifie s’il y a des jetons présents dans tokenizer String. nextToken() récupère le prochain jeton de la chaîne. Cette méthode lève NoSuchElementException si aucun jeton n’est présent dans la chaîne.

Itérer pour convertir les jetons String en int et les collecter dans un tableau int.

package stringToIntArray;

import java.util.StringTokenizer;

public class StringToIntUsingStringTokenizer {
  public static void main(String[] args) {
    String testString = "[1,2,3,4]";
    StringTokenizer stk = new StringTokenizer(testString, "[,]");
    String[] strings = new String[stk.countTokens()];
    int[] integerArray = new int[stk.countTokens()];
    int i = 0;
    while (stk.hasMoreTokens()) {
      strings[i] = stk.nextToken();
      integerArray[i] = Integer.parseInt(strings[i]);
      i++;
    }
    for (int j = 0; j < integerArray.length; j++)
      System.out.println("number[" + j + "]=" + integerArray[j]);
  }
}

Production:

number[0]=1
number[1]=2
number[2]=3
number[3]=4
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - Java String

Article connexe - Java Array