作成前の準備
以下は、このメソッドを作成するために必要な重要な知識ポイントです:
1. charAt(index):指定された位置の文字を返します。
2. substr(start, length):指定された開始位置から指定された長さの文字列を返します。
引数:
start:必須項目。切り出す文字列の開始位置です;
length:任意項目。返される文字列に含まれる文字数です。length<=0 の場合は空の文字列を返すことを意味し、length が指定されていない場合は、切り出した文字列が start から文字列の最後まで続くことを意味します。
3. substring(start, end):指定された文字列を返します。
引数:
start:部分文字列の開始位置を指定します。このインデックスは 0 から始まります;
end:部分文字列の終了位置を指定します。このインデックスは 0 から始まります。
特殊なケース:
引数が1つだけの場合、その引数を開始位置とみなし、その位置から文字列の末尾までの文字を返します;
start と end の間では、小さい方が開始位置、大きい方が終了位置になります。例えば、a.substring(1, 5) と a.substring(5, 1) は同じ文字列を返します;
start または end が NaN または負の数である場合、それらは 0 に設定されます。
具体的なコード
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, "元整"); // 替换掉数字里面的零字符,得到结果
}
オンラインテスト
作者ニックネーム:Lichee荔枝
作者メールアドレス:442070894@qq.com