> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 정수 금액을 중국어 숫자 대문자로 변환

JavaScript 정수 금액을 중국어 숫자 대문자로 변환

高洛峰
풀어 주다: 2016-11-25 11:19:41
원래의
1101명이 탐색했습니다.

얼마 전 온라인 뱅킹을 이용해 친구에게 돈을 이체했는데 금액 항목에 아라비아 숫자를 입력하면 오른쪽에 해당 중국어 숫자가 대문자로 바로 표시됩니다. 꽤 재미있다고 생각해서 인터넷에서 기성 코드를 찾아봤고(별로 자세히 검색하지는 않았습니다) Java 조각과 C# 조각을 발견했습니다. 그러나 나는 그 구현이 매우 번거롭거나 충분히 우아하지 않다고 생각합니다. 가장 중요한 것은 기능적 결함이 있다는 것입니다. 예를 들어 100은 "백십 조각"으로 번역됩니다. 그래서 나는 작은 프로그램을 직접 작성하는 것을 고려했습니다.

저는 이제 특정한 사고 방식을 가지고 있습니다. 텍스트 처리를 생각할 때 떠오르는 것은 정규 표현식을 생각할 때 Perl을 생각하고 정규 표현식을 생각합니다. 무엇을 할 수 있는지. JavaScript와 비교할 수 있습니다...

아래는 현재 양의 정수만 처리하는 코드입니다.

일반 사본을 클립보드 인쇄로 보기

함수 Digit_UPPERCASE (N) {
VAR DIGIT = [
Zero, One, 贰, Three,
Wu, Lu, 柒 捌 捌, 玖
];
var 단위 = [
for (var i = 0; i < 단위[0].length && n > 0; i++) {
var p = ; for (var j = 0; j < 단위[1] .length && n > 0; j++) {
p = 숫자[n % 10] + 단위[1][j] + p; n = Math.floor(n / 10);

 s = p.replace(/(zero.)*zero$/,) 
      .replace(/^$/, zero)                                 >                                                           . 0위안) + 정수
}
함수 digit_uppercase(n) {
var 숫자 = [
0, 1, 2, 3, 4,
5, 6, 7, 8,玖
];
var 단위 = [
[위안, 만, 십억],
[, 시, 백, 건]
];
var s = ;
for (var i = 0; i < 단위[0].length && n > 0; i++) {
var p = ;
단위[0].length for (var j = 0; j < 단위[1]. 길이 && n > 0; j++) {
                                           $/, )
.replace(/^$/ , 영)
+ 단위[0][i] + s;
}
return s.replace(/(zero.)*zero yuan/, yuan)
.replace(/(zero .)+/g, 영)
.replace(/^$/, 영위안) + 전체;
}

기능 테스트
클립보드 인쇄로 일반 사본을 확인하시겠습니까?
alert(digit_uppercase(0)); 🎜>alert(digit_uppercase(1000000)) // 백만 위안
alert(digit_uppercase(100000001)); // 111위안
alert(digit_uppercase(1000000000)); // 1억위안
alert(digit_uppercase(1234567890)) // 1억2억3천4백5백 백만 칠천팔백구십위안
alert(digit_uppercase(1001100101)) // 십억백일백일위안
alert(digit_uppercase(110101010)) // 10억1111위안
alert(digit_uppercase) (0)) // 0위안
alert(digit_uppercase(123)) //1233 yuan
alert(digit_uppercase(1000000)); // 십만위안
alert(digit_uppercase(100000001)) // 10억1위안
alert(digit_uppercase(1000000000)) // 1 10억 위안
alert(digit_uppercase(1234567890)); // 백이십삼천사백오십육만칠천팔백구십위안
alert(digit_uppercase(1001100101)); // 10억111111위안
Alert(digit_uppercase(110101010)) //1억1천10만1천1백위안

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿