[JS] 숫자 한글로 변환하기

p-q·2022년 11월 9일
0

JavaScript

목록 보기
9/11
	const priceEl = document.querySelector('#enter-price');
	const pricePlaceholder = document.querySelector('#price-placeholder');
	const textArray = ["", "일", "이", "삼", "사","오","육","칠","팔","구","십"];
	const priceArray = ["", "십", "백", "천", "", "십", "백", "천", "", "십", "백", "천", "", "십", "백", "천"];

	priceEl.addEventListener("keyup", function (e) {
		const value = e.target.value;
		const price = value.replace(/,/g, "");
		let textPrice;
		if (price != "" && !isNaN(price)) {
			textPrice = numberTransformKorean(price) + "원";
		} else {
			textPrice = "금액 미입력";
		}

		pricePlaceholder.innerHTML = textPrice;
	
		const priceComma = price.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
		e.target.value = priceComma;
	});

	//숫자 한글로 변환
	const numberTransformKorean = (number) => {
		const enteredNumber = (number * 10000).toString(); // 만원 단위로 입력받기 때문에 * 10000
		const numberArray = enteredNumber.split(""); //number 를 배열로 변환
		let result = ""; // 리턴값 선언
		numberArray.forEach((item, index) => {
			let numberUnit = "";
			let transNumber = textArray[enteredNumber.charAt(numberArray.length - (index + 1))]; //숫자를 해당 자리에 맞는 한글로 변환

			if (transNumber !== "") {
				numberUnit += transNumber + priceArray[index]; // 변환한 숫자가 존재할경우 자릿수를 붙여줍니다.
			}
			//단위 붙여주기
			switch (index) {
				case 4:
					numberUnit += "만";
					break;
				case 8:
					numberUnit += "억";
					break;
				case 12:
					numberUnit += "조";
					break;
			}
			// numberUnit이 존재할때 리턴값에 numberUnit을 더해줌
			if (numberUnit != "") {
				result = numberUnit + result;
			}
		});

      	//0만을 사용해 억단위로 올라갈 때에 '만' 을 제거해준다
		const zeroCount = numberArray.filter((item) => item === "0").length;
		if (zeroCount === 8) {
			result = result.replace("만", "");
		}

		return result;
	};
profile
ppppqqqq

0개의 댓글