Converter String em Int Array em Java

Rashmi Patidar 12 outubro 2023
  1. Converter String em Array Int usando o método replaceAll()
  2. Converter string em matriz interna usando a biblioteca de fluxo Java 8
  3. Converter String em Array Int usando StringTokenizer e funções
Converter String em Int Array em Java

Na linguagem Java, pode haver várias abordagens para refletir sobre a declaração do problema.

Vamos primeiro dividir a definição do problema em duas partes.

  1. Converta uma string simples no array String.
  2. Converta um array String em um array int.

Aqui está a representação esquemática das duas etapas acima:

sequência de fluxograma para int em Java

Converter String em Array Int usando o método replaceAll()

Podemos usar o método replaceAll() da classe String que leva dois argumentos, valores regex e replacement. Este método substituirá a regex fornecida pelo valor de substituição fornecido. E no final das funções da cadeia, o método split() é usado. Este método divide a String com base no caractere fornecido.

Devemos usar a função Integer.parseInt() quando os valores são divididos e coletados em um array String. Como o método parseInt() lança NumberFormatException, a instrução deve estar em um bloco try...catch para capturar a possível exceção.

Abaixo está o programa de amostra para demonstrar a conversão de strings para a matriz 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));
  }
}

Resultado:

[1,2,356,678,3378]

Se testString tiver o valor [1,2,356,678,3378,f], ele lançará uma exceção e a saída terá a seguinte aparência.

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

Converter string em matriz interna usando a biblioteca de fluxo Java 8

No programa abaixo, primeiro, pegamos a função Arrays.stream(). Para fornecer um fluxo para isso, usamos o método substring() da classe String, que usa o primeiro e o último parâmetros de índice. Sobre a String retornada, a função split() é aplicada, que divide a String fornecida com base em um delimitador.

Sobre o fluxo a função map() é aplicada. Esta função recebe qualquer função como argumento e retorna o fluxo. Demos a função trim() da classe String que eliminou os espaços em branco à esquerda e à direita. parseInt transforma a string recebida em int. toArray() despeja elementos inteiros convertidos em um 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));
  }
}

Resultado:

[1, 2, 3, 4, 5]

Converter String em Array Int usando StringTokenizer e funções

Instancie o objeto StringTokenizer usando seu construtor StringTokenizer(). O construtor pega a String de entrada e o delimitador para formar uma String tokenizada. Simultaneamente, crie um array de String e int com tamanho como tokens na String tokenizada.

O método countTokens() conta os tokens, que internamente ignora o delimitador. hasMoreTokens() verifica se há algum token presente na string do tokenizer. nextToken() recupera o próximo token da String. Este método lança NoSuchElementException se nenhum tokens estiver presente na String.

Faça a iteração para converter os tokens String em int e colete em um 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]);
  }
}

Resultado:

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

Artigo relacionado - Java String

Artigo relacionado - Java Array