어제 오늘 내일

[Java] String / codePointBefore(int index) 사용법 및 예제 본문

IT/Java

[Java] String / codePointBefore(int index) 사용법 및 예제

hi.anna 2024. 12. 9. 21:09

 

codePointBefore(int index)

지정한 인덱스 바로 앞에 있는 코드 포인트를 반환하는 메서드입니다.

이 메소드는 유니코드 코드 포인트를 처리하는데 유용하며,

특히 다국어 문자나 이모지와 같이 여러 코드 유닛으로 구성된 문자(surrogate pair)를 다룰 때 유용합니다.

Syntax

java.lang.String
public int codePointBefore(int index)

 

  매개변수  

int index

  • 지정한 인덱스 바로 앞의 코드 포인트가 반환됨
  • 이 인덱스는 1 이상의 값이어야 합니다.

 

  리턴 값  

지정한 인덱스 바로 앞에 있는 코드 포인트를 int 타입으로 반

 

  예외  

IndexOutOfBoundsException

주어진 인덱스 값이 잘못된 범위에 있을 때 발생

 

예제. 

  코드  

public class CodePointBeforeExample {
    public static void main(String[] args) {
        String str = "😊Hello";

        // 문자열에서 인덱스 2 바로 앞의 코드 포인트를 가져옵니다.
        int codePoint = str.codePointBefore(2);

        // 결과 출력
        System.out.println("인덱스 2 바로 앞의 코드 포인트는: " + codePoint);  // 'H' 앞의 코드 포인트를 반환
        System.out.println("인덱스 2 바로 앞의 문자: " + new String(Character.toChars(codePoint))); // 코드 포인트에 해당하는 문자
    }
}

 

  결과  

인덱스 2 바로 앞의 코드 포인트는: 128522
인덱스 2 바로 앞의 문자: 😊

 

  설명  

String str = "😊Hello";

😊는 2개의 코드 유닛으로 구성된 문자입니다.

이모지 😊는 UTF-16 인코딩에서 surrogate pair로 표현됩니다.

따라서, 😊는 두개의 char로 구성됩니다.

따라서, H의 index는 2입니다.

 

str.codePointBefore(2);

codePointBefore(2)는 😊이모지를 가리키고,

이 이모지의 코드 포인트는 128522입니다.

 

new String(Character.toChars(codePoint)));

codePoint를 문자열로 변환하여 출력합니다.

 

 

 

반응형
Comments