Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java) 프로그램으로 특정 인덱스의 유니코드 코드 포인트 확인하기


이 글에서는 자바(Java)를 사용하여 문자열에서 특정 인덱스에 해당하는 유니코드 코드 포인트(code point)를 확인하는 방법을 살펴봅니다.

모든 문자는 하나의 유니코드 코드 포인트로 표현됩니다. 코드 포인트란 주어진 문자를 고유하게 식별하는 정수 값을 의미하며, 유니코드 문자는 UTF-8이나 UTF-16 같은 다양한 인코딩 방식으로 표현될 수 있습니다.

아래 예시를 통해 개념을 쉽게 이해할 수 있습니다.

입력값

입력 문자열: Java Program
인덱스 값: 5

기대 출력 결과

유니코드 포인트: 80

알고리즘

1단계 - 시작(START)
2단계 - 문자열 변수 input_string과 정수형 변수 index, result를 선언한다
3단계 - 각 변수에 값을 할당한다
4단계 - codePointAt() 메서드를 호출해 코드 포인트 값을 가져온 뒤 result에 저장한다
5단계 - 결과를 화면에 출력한다
6단계 - 종료(STOP)

예제 1: main() 메서드에서 전체 로직 처리하기

첫 번째 예제는 모든 연산을 하나의 'main' 메서드 안에서 한 번에 처리하는 방식입니다.

import java.io.*;
public class UniCode {
    public static void main(String[] args){
        System.out.println("필요한 패키지가 임포트되었습니다");
        String input_string = "Java Program";
        System.out.println("\n정의된 문자열: " + input_string);
        int result = input_string.codePointAt(5);
        System.out.println("인덱스 5의 유니코드 포인트 : " + result);
    }
}

실행 결과

필요한 패키지가 임포트되었습니다

정의된 문자열: Java Program
인덱스 5의 유니코드 포인트 : 80

예제 2: 객체 지향 방식으로 메서드 분리하기

두 번째 예제는 연산 로직을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍(OOP) 스타일로 구현한 것입니다. 재사용성이 필요한 경우에는 이처럼 기능을 독립적인 메서드로 분리하는 것이 좋습니다.

import java.io.*;
public class UniCode {
    static void unicode_value(String input_string, int index){
        int result = input_string.codePointAt(index);
        System.out.println("인덱스 " + index + "의 유니코드 포인트 : " + result);
    }
    public static void main(String[] args) {
        System.out.println("필요한 패키지가 임포트되었습니다");
        String input_string = "Java Program";
        System.out.println("\n정의된 문자열: " + input_string);
        int index = 5;
        unicode_value(input_string, index);
    }
}

실행 결과

필요한 패키지가 임포트되었습니다

정의된 문자열: Java Program
인덱스 5의 유니코드 포인트 : 80

codePointAt() 메서드 추가 참고 사항

codePointAt(int index) 메서드는 지정한 인덱스에 위치한 문자의 코드 포인트 값을 반환합니다. 만약 해당 인덱스의 문자가 상위 서러게이트(high-surrogate) 범위에 있고 바로 뒤의 문자가 하위 서러게이트(low-surrogate)라면, 두 문자가 합쳐진 보조 코드 포인트(supplementary code point) 값을 반환합니다.

또한 인덱스가 음수이거나 문자열 길이보다 크거나 같으면 StringIndexOutOfBoundsException이 발생하므로, 반드시 유효한 인덱스 범위(0부터 length-1까지) 안에서 메서드를 호출해야 합니다.