Vor ein paar Tagen habe ich per Online-Banking Geld an einen Freund überwiesen. Geben Sie in die Betragsspalte arabische Ziffern ein, und die entsprechenden chinesischen Ziffern in Großbuchstaben werden sofort rechts angezeigt. Ich fand es ziemlich interessant, also suchte ich im Internet nach vorgefertigten Codes (ich habe nicht sehr sorgfältig gesucht) und fand ein Stück Java und ein Stück C#. Allerdings empfinde ich die Umsetzung als sehr umständlich bzw. nicht elegant genug. Das Wichtigste ist, dass es funktionale Mängel aufweist. 100 wird beispielsweise mit „einhundertzehn Stück“ übersetzt. Deshalb habe ich darüber nachgedacht, selbst ein kleines Programm zu schreiben.
Ich habe jetzt auch eine bestimmte Einstellung: Wenn ich an die Verarbeitung von Text denke, fallen mir reguläre Ausdrücke ein. Wenn ich an reguläre Ausdrücke denke, denke ich an Perl, und dann denke ich an reguläre Ausdrücke und was es kann. Vergleichbar mit JavaScript...
Unten ist mein Code, der derzeit nur positive Ganzzahlen verarbeitet.
Plaincopy in Clipboardprint anzeigen? Function Digit_UPPERCASE (N) {
VAR DIGIT = [
Zero, One, 贰, Three,
Wu, Lu, 柒 捌 捌, 玖
];
var unit = [
for (var i = 0; i < unit[0].length && n > 0; i++) {
var p = ; for (var j = 0; j < unit[1] .length && n > 0; j++) {
p = digit[n % 10] + unit[1][j] + p; n = Math.floor(n / 10);
}
s = p.replace(/(null.)*null$/,)
.replace(/^$/, null) . Null Yuan) + ganz;
}
function digit_uppercase(n) {
var digit = [
0, 1, 2, 3, 4,
5, 6, 7, 8,玖
];
var unit = [
[yuan, zehntausend, milliarde],
[, Shi, hunderte, qian]
];
var s = ;
for (var i = 0; i < unit[0].length && n > 0; i++) {
var p = ;
unit[0].length for (var j = 0; j < Einheit[1]. Länge && n > 0; j++) {
null$/, )
.replace(/^$/ , null)
+ unit[0][i] + s;
}
return s.replace(/(null.)*null yuan/, yuan)
.replace(/(null .)+/g, null)
.replace(/^$/, null Yuan) + ganz;
}
Funktionstest
Klarkopie in Zwischenablage anzeigendrucken?
alert(digit_uppercase(0)); 🎜>alert(digit_uppercase(1000000)); // Eine Million Yuan
alert(digit_uppercase(100000001)); // Einhundertein Yuan
alert(digit_uppercase(1000000000)); // Einhundert Millionen Yuan
alert(digit_uppercase(1234567890)); // Einhundertzweihundert Millionen dreitausendvierhundertfünfhundert Millionen siebentausendsiebenhundertachtzighundertneunzig Yuan
alert(digit_uppercase(1001100101) // Eine Milliarde einhunderteinhunderteinhundertein Yuan
alert(digit_uppercase(110101010)); Eine Milliarde und eintausendeinhunderteinhundertein Yuan
alert(digit_uppercase) (0)); // Null Yuan
alert(digit_uppercase(123)); // Einhundertzweihundertdreißig yuan
alert(digit_uppercase(1000000)); // Einhunderttausend Yuan
alert(digit_uppercase(100000001)); // Eine Milliarde und ein Yuan
alert(digit_uppercase(1000000000)); // Eins Milliarde Yuan
alert(digit_uppercase(1234567890)); // Einhundertzweihundertdreitausendvierhundertfünfhundertsechzigtausendsiebentausendachthundertneunzig Yuan
alert(digit_uppercase(1001100101)); // Eine Milliarde und einhunderteinhunderteinhundertein Yuan
Alert(digit_uppercase(110101010)); // Einhundert Millionen eintausendeinhunderttausendeintausendeintausendeinhundert Yuan