HOWTO · Java

Java에서 문자열을 Int 배열로 변환

이 기사에서는 Java에서 String을 int 배열로 변환하는 방법을 소개합니다.

Java 언어에서는 문제 설명에 대해 생각할 수있는 몇 가지 접근 방식이있을 수 있습니다.

먼저 문제 설명을 두 부분으로 나누겠습니다.

  1. 간단한 문자열을 문자열 배열로 변환합니다.
  2. String 배열을 int 배열로 변환합니다.

다음은 위의 두 단계를 다이어그램으로 나타낸 것입니다.

흐름 차트 문자열을 Java에서 int로

replaceAll()메서드를 사용하여 문자열을 Int 배열로 변환

regexreplacement값의 두 인수를 사용하는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