1. 개요

String 은 일반적인 유형이고 charJava 에서 기본 유형입니다.

이 사용방법(예제)에서는 Java에서 String 개체를 char 로 변환하는 방법을 살펴봅니다 .

2. 문제 소개

char 에는 하나 의 단일 문자만 포함될 수 있다는 것을 알고 있습니다 . 그러나 String 개체는 여러 문자를 포함할 수 있습니다.

따라서 예제에서는 두 가지 경우를 다룹니다.

  • 소스는 단일 문자 문자열입니다.
  • 소스는 다중 문자 문자열입니다.

사례 1의 경우 단일 문자를 char 로 쉽게 얻을 수 있습니다. 예를 들어 이것이 우리의 입력이라고 가정해 보겠습니다.

String STRING_b = "b";

변환 후 char ' b '가 있을 것으로 예상합니다.

사례 2의 경우 소스 문자열 이 다중 문자 문자열이고 결과적으로 하나의 단일 문자 를 얻으려면 첫 번째, 마지막 또는 n-와 같이 원하는 문자를 선택하기 위한 요구 사항을 분석해야 합니다. 캐릭터.

이 예제에서는 보다 일반적인 솔루션을 다룰 것입니다. 소스 문자열 을 문자열의 각 문자를 보유 하는 char 배열 로 변환합니다. 이런 식으로 요구 사항에 따라 모든 요소를 ​​선택할 수 있습니다.

입력 예제로 STRING_Baeldung 을 사용 합니다.

String STRING_Baeldung = "Baeldung";

그럼 다음으로 실제 동작을 살펴보겠습니다.

3. 단일 문자열

Java의 String 클래스는 charAt() 를 제공하여 입력 문자열에서 n번째 문자(0부터 시작)를 char 로 가져옵니다 . 따라서 getChar(0) 메서드를 직접 호출하여 단일 문자열char 로 변환할 수 있습니다 .

assertEquals('b', STRING_b.charAt(0));

그러나 입력이 빈 문자열이면  charAt() 메서드 호출이 StringIndexOutOfBoundsException 을 발생시킵니다 .

assertThrows(StringIndexOutOfBoundsException.class, () -> "".charAt(0));

따라서 charAt() 메서드 를 호출하기 전에 입력 문자열이 null 또는 비어 있지 않은지 확인해야 합니다 .

4. 여러 문자 문자열

우리는 charAt(0) 을 사용하여 단일 문자열char 로 변환하는 방법을 배웠습니다 . 입력이 다중 문자 String 이고 char 로 변환하려는 문자를 정확히 알고 있으면 charAt() 메서드 를 계속 사용할 수 있습니다 . 예를 들어 입력 문자열 " Baeldung " 에서 네 번째 문자(' l ')를 얻을 수 있습니다 .

assertEquals('l', STRING_Baeldung.charAt(3));

또한 String.toCharArray() 를 사용하여 모든 문자를 포함하는 char[] 배열  을 얻을 수 있습니다.

assertArrayEquals(new char[] { 'B', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }, STRING_Baeldung.toCharArray());

toCharArray() 메서드는 빈 문자열 입력에도 작동 한다는 점을 언급할 가치가 있습니다 . 결과로 빈 char 배열을 반환합니다.

assertArrayEquals(new char[] {}, "".toCharArray());

toCharArray() 외에도 String.getChars() 는 주어진 String 에서 char 배열 로 연속적인 문자를 추출할 수 있습니다 . 이 메서드는 4개의 인수를 받습니다.

  • srcBegin – 가져올 문자열의 첫 번째 문자 인덱스(포함)
  • srcEnd – 복사할 문자열의 마지막 문자 인덱스, 제외
  • dst - 우리의 결과인 대상 배열
  • dstBegin – 대상 배열의 시작 오프셋입니다. 우리는 이것을 예를 들어 논의할 것입니다.

먼저 " Baeldung " 문자열에서 " aeld "를 추출 하고 미리 정의된 char 배열 에 채우 겠습니다 .

char[] aeld = new char[4];
STRING_Baeldung.getChars(1, 5, aeld, 0);
assertArrayEquals(new char[] { 'a', 'e', 'l', 'd' }, aeld);

위의 테스트에서 알 수 있듯이 getChars() 를 호출하려면 먼저 결과를 저장할 char 배열 이 있어야 합니다 .

이 예에서는 getChars()  를 호출할 때 dstBegin 에 0전달 합니다. 이는 변환된 결과가 aeld 배열의 첫 번째 요소에서 시작되기를 원하기 때문 입니다.

물론 때때로 우리는 결과가 배열의 중간 부분을 덮어쓰길 원합니다. 그런 다음 dstBegin 을 원하는 값으로 설정할 수 있습니다 .

다음으로 " aeld "를 chars로 변환하고 두 번째(index=1) 요소의 대상 배열을 덮어쓰는 또 다른 예를 살펴보겠습니다 .

char[] anotherArray = new char[] { '#', '#', '#', '#', '#', '#' };
STRING_Baeldung.getChars(1, 5, anotherArray, 1);
assertArrayEquals(new char[] { '#', 'a', 'e', 'l', 'd', '#' }, anotherArray);

따라서 볼 수 있듯이 dstBegin=1 을 메서드에 전달하고 예상한 결과를 얻습니다.

5. 결론

이 기사에서는 Java에서 Stringchar 로 변환하는 방법을 배웠습니다 .

항상 그렇듯이 기사에 사용된 코드는 GitHub에서 사용할 수 있습니다 .

Generic footer banner