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

Rashmi Patidar 2023년10월12일
  1. replaceAll()메서드를 사용하여 문자열을 Int 배열로 변환
  2. Java 8 스트림 라이브러리를 사용하여 문자열을 Int 배열로 변환
  3. StringTokenizer 및 함수를 사용하여 문자열을 Int 배열로 변환
Java에서 문자열을 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
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

관련 문장 - Java String

관련 문장 - Java Array