Préparation avant l'écriture
Voici les points de connaissance clés nécessaires pour écrire cette méthode :
1. charAt(index): Retourne le caractère à la position spécifiée.
2. substr(start, length): Retourne une chaîne d'une longueur spécifiée à partir d'une position spécifiée.
Paramètres :
start:Obligatoire. La position de départ de la chaîne à extraire.
length:Facultatif. Le nombre de caractères inclus dans la chaîne retournée. Lorsque length <= 0, une chaîne vide est retournée ; lorsque length n'est pas spécifié, la chaîne extraite s'étend de start jusqu'à la fin de la chaîne.
3. substring(start, end): Retourne la sous-chaîne spécifiée.
Paramètres :
start:Indique la position de départ de la sous-chaîne ; l'index est compté à partir de 0.
end:Indique la position de fin de la sous-chaîne ; l'index est compté à partir de 0.
Cas particuliers :
Si un seul paramètre est fourni, il est défini par défaut comme position de départ, et les caractères depuis ce paramètre jusqu'à la fin de la chaîne sont retournés.
Entre start et end, le plus petit est utilisé comme position de départ et le plus grand comme position de fin. Par exemple, a.substring(1, 5) et a.substring(5, 1) retournent la même chaîne.
Si start ou end vaut NaN ou est négatif, il est défini à 0.
Code spécifique
function ToString(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)){
return "数据非法"; //判断数据是否大于0
}
var unit = "千百拾亿千百拾万千百拾元角分", str = "";
n += "00";
var indexpoint = n.indexOf('.'); // 如果是小数,截取小数点前面的位数
if (indexpoint >= 0){
n = n.substring(0, indexpoint) + n.substr(indexpoint+1, 2); // 若为小数,截取需要使用的unit单位
}
unit = unit.substr(unit.length - n.length); // 若为整数,截取需要使用的unit单位
for (var i=0; i < n.length; i++){
str += "零壹贰叁肆伍陆柒捌玖".charAt(n.charAt(i)) + unit.charAt(i); //遍历转化为大写的数字
}
return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整"); // 替换掉数字里面的零字符,得到结果
}
Test en ligne
Pseudo de l'auteur : Lichee Lychee
E-mail de l'auteur : 442070894@qq.com