Post

Java String을 Char Array로 변환

1. for 루프 사용

String characters를 하나씩 가져오는 코드를 직접 작성할 수 있다. 그런 다음 문자 배열을 문자로 채운다.

  • 예제
1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Arrays;

public class StringChar {
    public static void main(String[] args) {
        String s = "abc123";
        char[] chrs = new char[s.length()];
        for (int i = 0; i < s.length(); i++) {
            chrs[i] = s.charAt(i);
        }
        System.out.println(Arrays.toString(chrs));
    }
}
  • 결과
1
[a, b, c, 1, 2, 3]

이 방법은 char 배열을 채우기 위해 추가 논리를 원할 때 유용하다. 예를 들어, 중복 문자를 건너뛰거나 소문자로 변경하는 등의 방법이다.

2. toCharArray() 메서드

이것은 문자열을 char 배열로 변환하는 권장 방법이다. toCharArray() 메서드를 사용하여 문자열을 char 배열로 변환하는 예제이다.

  • 예제
1
2
3
4
5
6
7
8
9
import java.util.Arrays;

public class StringChar {
    public static void main(String[] args) {
        String s = "abc123";
        char[] chars = s.toCharArray();
        System.out.println(Arrays.toString(chars));
    }
}
  • 결과
1
[a, b, c, 1, 2, 3]

3. charAt() 메서드

때때로 특정 인덱스에서 문자를 가져와야 한다. 이를 위해 charAt() 메서드를 사용할 수 있다.

  • 예제
1
2
3
4
5
6
7
8
public class StringChar {
    public static void main(String[] args) {
        String s = "Java";
        System.out.println(s);
        char c = s.charAt(3);
        System.out.println(c);
    }
}
  • 결과
1
2
Java
a

4. getChars() 메서드

이 메서드는 특정 인덱스 간에 문자를 복사할 때 유용하다. String getChars() 메서드는 문자열에서 대상 문자 배열로 문자를 복사gks다. 메서드 구문은 다음과 같다.

  • 메서드 구문
1
public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin)
  • srcBegin: 문자가 복사될 인덱스이다.

  • srcEnd: 복사를 멈출 인덱스이다. 복사할 마지막 인덱스는 srcEnd-1이다.

  • dst: 대상 문자 배열이다. 이 메서드를 호출하기 전에 초기화해야 한다.

  • dstBegin: 대상 배열의 시작 인덱스이다.

  • 예제

1
2
3
4
5
6
7
8
9
10
import java.util.Arrays;

public class StringChar {
    public static void main(String[] args) {
        String s = "abc123";
        char[] substringChars = new char[7];
        s.getChars(1, 4, substringChars, 2);
        System.out.println(Arrays.toString(substringChars));
    }
}
  • 결과
1
[ ,  , b, c, 1,  ,  ]

문자열 문자는 인덱스 1부터 3까지 복사된다. 문자는 대상 배열의 2번째 인덱스부터 복사된다.

대상 배열 크기가 필요한 크기보다 작으면 java.lang.StringIndexOutOfBoundsExceptionthrow이 된다.

  • 예제
1
2
3
4
5
6
7
8
9
10
import java.util.Arrays;

public class StringChar {
    public static void main(String[] args) {
        String s = "abc123";
        char[] substringChars = new char[2];
        s.getChars(1, 4, substringChars, 2);
        System.out.println(Arrays.toString(substringChars));
    }
}
  • 결과
1
2
3
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: offset 2, count 3, length 2
	at java.base/java.lang.String.checkBoundsOffCount(String.java:4591)
	at java.base/java.lang.String.getChars(String.java:1679)

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.