Converti String in Int Array in Java

Rashmi Patidar 15 febbraio 2024
  1. Converti una stringa in un array interno usando il metodo replaceAll()
  2. Converti stringa in array Int utilizzando Java 8 Stream Library
  3. Converti String in Array Int usando StringTokenizer e funzioni
Converti String in Int Array in Java

Nel linguaggio Java, ci possono essere diversi approcci per riflettere sull’affermazione del problema.

Per prima cosa suddividiamo l’affermazione del problema in due parti.

  1. Convertire una semplice stringa nell’array di stringhe.
  2. Convertire un array String in un array int.

Ecco la rappresentazione schematica dei due passaggi precedenti:

stringa del diagramma di flusso in int in Java

Converti una stringa in un array interno usando il metodo replaceAll()

Possiamo usare il metodo replaceAll() della classe String che accetta due argomenti, i valori regex e replacement. Questo metodo sostituirà la regex data con il valore di sostituzione specificato. E alla fine delle funzioni a catena, viene utilizzato il metodo split(). Questo metodo divide la stringa in base al carattere fornito.

Dovremmo usare la funzione Integer.parseInt() quando i valori vengono suddivisi e raccolti in un array String. Poiché il metodo parseInt() genera NumberFormatException, l’istruzione dovrebbe essere in un blocco try...catch per catturare la possibile eccezione.

Di seguito è riportato il programma di esempio per dimostrare la conversione di stringhe in int array:

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

Produzione:

[1,2,356,678,3378]

Se testString ha valore come [1,2,356,678,3378,f], verrà generata un’eccezione e l’output sarà simile a questo.

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

Converti stringa in array Int utilizzando Java 8 Stream Library

Nel programma seguente, per prima cosa, abbiamo preso la funzione Arrays.stream(). Per fornire un flusso a questo, abbiamo usato il metodo substring() della classe String, che accetta il primo e l’ultimo parametro di indice. Sulla stringa restituita viene applicata la funzione split(), che divide la stringa data in base a un delimitatore.

Sul flusso viene applicata la funzione map(). Questa funzione accetta qualsiasi funzione come argomento e restituisce il flusso. Abbiamo fornito la funzione trim() della classe String che eliminava gli spazi bianchi iniziali e successivi. parseInt trasforma la stringa data ricevuta in int. toArray() scarica gli elementi int convertiti in un Array.

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

Produzione:

[1, 2, 3, 4, 5]

Converti String in Array Int usando StringTokenizer e funzioni

Istanziare un oggetto StringTokenizer usando il suo costruttore StringTokenizer(). Il costruttore accetta la stringa di input e il delimitatore per formare una stringa tokenizzata. Crea simultaneamente una matrice di String e int con dimensioni pari a token nella String con token.

Il metodo countTokens() conta i token, che internamente salta il delimitatore. hasMoreTokens() controlla se sono presenti token nella stringa tokenizer. nextToken() recupera il token successivo dalla stringa. Questo metodo genera NoSuchElementException se non sono presenti token nella stringa.

Iterate per convertire i token String in int e raccoglieteli in un array 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]);
  }
}

Produzione:

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

Articolo correlato - Java String

Articolo correlato - Java Array