HOWTO · Java
Converter String em Int Array em Java
Este artigo apresenta métodos para converter String em array int 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.
- Converta uma string simples no array String.
- Converta um array String em um array int.
Aqui está a representação esquemática das duas etapas acima:
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