作成前の準備

以下は、このメソッドを作成するために必要な重要な知識ポイントです:

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