개발이야기/Java

[Java] 금액, 숫자를 한글로 변환하기

후린개발자 2023. 11. 20.
반응형

아래 소스코드는 입력된 금액, 숫자에 대해서 한글로 변환해서 반환하는 예제입니다.

 

 

소스코드

000000000000 입력된 금액의 앞에 추가하여 금액을 16자리로 만듭니다. 금액의 크기에 따라 각 자리를 판단하기 위해서입니다. 입력된 금액을 뒤에서부터 한 자리씩 읽어가며 각 자리에 해당하는 한글로 변환 작업을 수행합니다.


변환 작업에서 0이 아닌 숫자에 대해서만 처리를 하고, 그에 따라 일, 십, 백, 천, 만, 억, 조 단위로 한글을 추가합니다.


각 자리의 숫자에 따라 일, 이, 삼, 사, 오, 육, 칠, 팔, 구를 추가합니다.

예를 들어, 입력된 금액이 "1234"일 경우

0000000000001234로 변환된 후 4번째 자리부터 읽어가면서 0이 아닌 경우에 해당하는 한글을 추가합니다.
결과적으로 일천이백삼십사가 반환됩니다.

 

 

public static String stramt(String amt) {
        String tmpamt = "";

        if (StringUtils.equals(amt, "0")) return "";

        amt = "000000000000" + amt.replaceAll(",", "");
        int j = 0;
        for (int i = amt.length(); i > 0; i--) {
            j++;
            String aaa = amt.substring(i - 1, i);
            if (!aaa.equals("0")) {
                if (j % 4 == 2) tmpamt = "십" + tmpamt;
                if (j % 4 == 3) tmpamt = "백" + tmpamt;
                if (j > 1 && j % 4 == 0) tmpamt = "천" + tmpamt;
            }
            String bbb = amt.substring(amt.length() - 8, amt.length() - 4);
            if (j == 5 && Integer.parseInt(bbb) > 0) tmpamt = "만" + tmpamt;
            String ccc = amt.substring(amt.length() - 12, amt.length() - 8);
            if (j == 9 && Integer.parseInt(ccc) > 0) tmpamt = "억" + tmpamt;
            String ddd = amt.substring(amt.length() - 16, amt.length() - 12);
            if (j == 13 && Integer.parseInt(ddd) > 0) tmpamt = "조" + tmpamt;
            if (aaa.equals("1")) tmpamt = "일" + tmpamt;
            if (aaa.equals("2")) tmpamt = "이" + tmpamt;
            if (aaa.equals("3")) tmpamt = "삼" + tmpamt;
            if (aaa.equals("4")) tmpamt = "사" + tmpamt;
            if (aaa.equals("5")) tmpamt = "오" + tmpamt;
            if (aaa.equals("6")) tmpamt = "육" + tmpamt;
            if (aaa.equals("7")) tmpamt = "칠" + tmpamt;
            if (aaa.equals("8")) tmpamt = "팔" + tmpamt;
            if (aaa.equals("9")) tmpamt = "구" + tmpamt;
        }

        return tmpamt;
    }

    public static void main(String[] args) throws Exception { 
        // 예제 1: 0
        String amount1 = "0";
        System.out.println("Amount in Korean (Example 1): " + stramt(amount1));

        // 예제 2: 1234
        String amount2 = "1234";
        System.out.println("Amount in Korean (Example 2): " + stramt(amount2));

        // 예제 3: 10000
        String amount3 = "10000";
        System.out.println("Amount in Korean (Example 3): " + stramt(amount3));

        // 예제 4: 99871
        String amount4 = "99871";
        System.out.println("Amount in Korean (Example 4): " + stramt(amount4));

        // 예제 5: 98452148
        String amount5 = "98452148";
        System.out.println("Amount in Korean (Example 5): " + stramt(amount5));
    }

 

 


 

소스코드 결과

반응형

댓글

💲 추천 글