원문

기압골의 영향으로 12월 3일은 서울.경기도와 강원영서에 비 또는 눈이, 4일은 제주도에 비가 오겠습니다. <br />그 밖의 예보기간에는 고기압의 가장자리에 들어 가끔 구름이 많겠습니다. <br />기온은 평년(최저기온: -7~4도, 최고기온: 5~13도)보다 조금 낮겠습니다.<br />강수량은 평년(1~3mm)보다 적겠으나, 서울.경기도와 강원영서, 제주도는 비슷하겠습니다.


변환문

기압골의 영향으로 십이월 삼일은 서울.경기도와 강원영서에 비 또는 눈이, 사일은 제주도에 비가 오겠습니다. 그 밖의 예보기간에는 고기압의 가장자리에 들어 가끔 구름이 많겠습니다. 기온은 평년( 최저기온은 마이너스 칠에서 사도, 최고기온은 오에서 십삼도 )보다 조금 낮겠습니다.강수량은 평년( 일에서 삼밀리미터 )보다 적겠으나, 서울.경기도와 강원영서, 제주도는 비슷하겠습니다.


Javascript 코드

<html>
<head>
    <meta charset="UTF-8">
    <title>JS 테스트</title>
</head>
<script>
function viewKorean(num) {
    var hanA = new Array("","일","이","삼","사","오","육","칠","팔","구","십");
    var danA = new Array("","십","백","천","","십","백","천","","십","백","천","","십","백","천");
    var result = "";
    for(i=0; i<num.length; i++) {
        str = "";
        han = hanA[num.charAt(num.length-(i+1))];
        if(han != "") str += han+danA[i];
        if(i == 4)    str += "만";
        if(i == 8)    str += "억";
        if(i == 12)   str += "조";
        result = str + result;
    }
    result = result.replace("일십", "십");
    result = result.replace("일백", "백");
    result = result.replace("일천", "천");

    return result;
}

var text = "기압골의 영향으로 12월 3일은 서울.경기도와 강원영서에 비 또는 눈이, 4일은 제주도에 비가 오겠습니다. <br />그 밖의 예보기간에는 고기압의 가장자리에 들어 가끔 구름이 많겠습니다. <br />기온은 평년(최저기온: -7~4도, 최고기온: 5~13도)보다 조금 낮겠습니다.<br />강수량은 평년(1~3mm)보다 적겠으나, 서울.경기도와 강원영서, 제주도는 비슷하겠습니다.";

var text = "";

// 태그 제거
var re = /\<br.\/\>/gi;
var minus = /(-)(\d+)/gi;
var tilde = /(~)(\d+)/gi;
var units = /mm/gi;
var colon = /\:/gi;
var brackets_start = /\(/gi;
var brackets_end = /\)/gi;
var number_pattern = /\d+/g;

text = text.replace(re, "").replace(minus, "마이너스 $2").replace(tilde, "에서 $2").replace(units, "밀리미터").replace(colon, "은").replace(brackets_start, " 대비 ").replace(brackets_end, "로 작년");

var number_string = text.match( number_pattern );

for(var z=0; z<number_string.length; z++) {
    text = text.replace(number_string[z], viewKorean(number_string[z]));
}

console.log(text);
</script>
<body>
</body>
</html>