Apr 13, 2016

숫자를 한글로 읽는 로직

<-------------------------------------------Description--------------------------------------------->
한국돈 10000 => 일만  으로 봐꿔주는 소스 1
<--------------------------------------------------------------------------------------------------->

<----------------------------------------------Code------------------------------------------------->
static void SSBP_SendtoEContract_AmountTest(Args _args)
{
    real        _AMT        =0;
    str         _StrAMT     ='';
    str         _WordAMT    ='';
    str         _WordUnit   ='';
    int         _Count      =0;
    int         _AMTCount   =0;
   
    str         _A1='';
    str         _A2='';
    str         _A3='';
    str         _A4='';
    SSBP_WordCount  _WordCount;
    str         _AMTPLUSWORD;
    //금액 입력 부분
    _AMT= 5555555555;
    //금액 문자변환 부분
    _StrAMT   = num2str(_AMT,0,0,0,0);
    //금액 카운터
    _AMTCount = strLen(_StrAMT);
    for(_Count=1; _Count <= _AMTCount; _Count++)
    {
        _WordCount.clear();
        _WordCount.SSBP_AMTUnit =  str2int( subStr(_StrAMT,_Count,1));
        _WordCount.SSBP_Count = _Count;
        _WordCount.insert();
    }
    _Count = 0;
   
    while
    select _WordCount
    order by SSBP_Count desc
    {
        _Count++;
        if(_WordCount.SSBP_AMTUnit !=0)
        {
            _AMTPLUSWORD = TEST_Andy::AmountToWord(_WordCount.SSBP_AMTUnit, _Count);
           
            //KRW Unit**********************************************************
            //만(萬) 10000------------------------------------------------------
            if(_A1 =='' && (_Count >=5 && _Count <=8))
            {
                _A1 = '만';
                _WordAMT = strFmt('%1%2%3',_AMTPLUSWORD,_A1,_WordAMT);
            }
            //억(億) 10의 8제곱 (1만의 1만배)-------------------------------------
            else           
            if(_A2 =='' && (_Count >=9 && _Count <=12))
            {
                _A2 = '억';
                _WordAMT = strFmt('%1%2%3',_AMTPLUSWORD,_A2,_WordAMT);
            }
            //조(兆) 10의 12제곱 (1억의 1만배)------------------------------------
            else
            if(_A3 =='' && (_Count >=13 && _Count <=16))
            {
                _A3 = '조';
                _WordAMT = strFmt('%1%2%3',_AMTPLUSWORD,_A3,_WordAMT);
            }
            //경(京) 10의 16제곱 (1조의 1만배)------------------------------------
            else
            if(_A4 =='' && (_Count >=17 && _Count <=20))
            {
                _A4 = '경';
                _WordAMT = strFmt('%1%2%3',_AMTPLUSWORD,_A4,_WordAMT);
            }
            else
            {
                _WordAMT = strFmt('%1%2',_AMTPLUSWORD,_WordAMT);
            }
            //******************************************************************
        }
    }
    info(_WordAMT);
}
<--------------------------------------------------------------------------------------------------->

<-------------------------------------------Description--------------------------------------------->
한국돈 10000 => 일만  으로 봐꿔주는 소스 2 클레스나 메소드로 만들어 1번 소스에서 호출한다.
<--------------------------------------------------------------------------------------------------->

<----------------------------------------------Code------------------------------------------------->
static str 10 AmountToWord(int _AMT,int _Count)
{
    str 10  _Word='';
    switch (_AMT)
    {
        case 1:
            _Word   =   '일';
            break;
        case 2:
            _Word   =   '이';
            break;
        case 3:
            _Word   =   '삼';
            break;
        case 4:
            _Word   =   '사';
            break;
        case 5:
            _Word   =   '오';
            break;
        case 6:
            _Word   =   '육';
            break;
        case 7:
            _Word   =   '칠';
            break;
        case 8:
            _Word   =   '팔';
            break;
        case 9:
            _Word   =   '구';
            break;
        case 10:
            _Word   =   '십';
            break;
    }
    switch (_Count)
    {
        case 1:  _Word = _Word +''; break;
        case 2:  _Word = _Word +'십';  break;
        case 3:  _Word = _Word +'백';  break;
        case 4:  _Word = _Word +'천';  break;
        case 5:  _Word = _Word +'';  break;
        case 6:  _Word = _Word +'십';  break;
        case 7:  _Word = _Word +'백';  break;
        case 8:  _Word = _Word +'천';  break;
        case 9:  _Word = _Word +'';  break;
        case 10: _Word = _Word +'십';  break;
        case 11: _Word = _Word +'백';  break;
        case 12: _Word = _Word +'천';  break;
        case 13: _Word = _Word +'';  break;
        case 14: _Word = _Word +'십';  break;
        case 15: _Word = _Word +'백';  break;
        case 16: _Word = _Word +'천';  break;
        case 17: _Word = _Word +'';  break;
        case 18: _Word = _Word +'십';  break;
        case 19: _Word = _Word +'백';  break;
        case 20: _Word = _Word +'천';  break;
    }
    return _Word;
}
<--------------------------------------------------------------------------------------------------->

No comments:

Post a Comment