HOWTO · Java
Java에서 문자열을 Int 배열로 변환
이 기사에서는 Java에서 String을 int 배열로 변환하는 방법을 소개합니다.
Java 언어에서는 문제 설명에 대해 생각할 수있는 몇 가지 접근 방식이있을 수 있습니다.
먼저 문제 설명을 두 부분으로 나누겠습니다.
- 간단한 문자열을 문자열 배열로 변환합니다.
- String 배열을 int 배열로 변환합니다.
다음은 위의 두 단계를 다이어그램으로 나타낸 것입니다.
replaceAll()메서드를 사용하여 문자열을 Int 배열로 변환
regex및replacement값의 두 인수를 사용하는String클래스의replaceAll()메소드를 사용할 수 있습니다. 이 메소드는 주어진 정규식을 주어진 대체 값으로 대체합니다. 그리고 체인 함수의 끝에서split()메소드가 사용됩니다. 이 메서드는 주어진 문자에 따라 문자열을 분할합니다.
값이 분할되어 String 배열로 수집 될 때Integer.parseInt()함수를 사용해야합니다. parseInt()메소드가NumberFormatException을 발생 시키므로 가능한 예외를 포착하려면 명령문이 하나의try...catch블록에 있어야합니다.
다음은 문자열을 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));
}
}
출력:
[1,2,356,678,3378]
testString의 값이[1,2,356,678,3378,f]인 경우 예외가 발생하며 출력은 다음과 같습니다.
Unable to parse string to int: For input string: "f"
[1, 2, 356, 678, 3378, 0]
Java 8 스트림 라이브러리를 사용하여 문자열을 Int 배열로 변환
아래 프로그램에서 먼저Arrays.stream()함수를 사용했습니다. 여기에 스트림을 제공하기 위해 첫 번째 및 마지막 인덱스 매개 변수를 사용하는String클래스의substring()메소드를 사용했습니다. 반환 된 String split()함수가 적용되어 구분 기호를 기반으로 주어진 문자열을 분할합니다.
스트림map()함수가 적용됩니다. 이 함수는 모든 함수를 인수로 사용하고 스트림을 반환합니다. 앞뒤의 공백을 제거하는 String 클래스의trim()함수를 제공했습니다. parseInt는 수신 된 주어진 문자열을 int로 변환합니다. toArray()는 변환 된 int 요소를 배열로 덤프합니다.
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));
}
}
출력:
[1, 2, 3, 4, 5]
StringTokenizer 및 함수를 사용하여 문자열을 Int 배열로 변환
생성자StringTokenizer()를 사용하여 StringTokenizer 객체를 인스턴스화합니다. 생성자는 입력 문자열과 구분 기호를 사용하여 토큰 화 된 문자열을 형성합니다. 토큰 화 된 문자열에서 토큰으로 크기가있는 String 및 int 배열을 동시에 생성합니다.
countTokens()메소드는 내부적으로 구분 기호를 건너 뛰는 토큰을 계산합니다. hasMoreTokens()는 토크 나이저 문자열에 토큰이 있는지 확인합니다. nextToken()은 문자열에서 다음 토큰을 검색합니다. 이 메소드는 문자열에 토큰이없는 경우NoSuchElementException을 발생시킵니다.
문자열 토큰을 int로 변환하고 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]);
}
}
출력:
number[0]=1
number[1]=2
number[2]=3
number[3]=4