JavaScript函数以文字形式转换货币字段

JavaScript函数以文字形式转换货币字段,javascript,Javascript,我找到了几个使用英语/美国货币的脚本,但我需要葡萄牙语,而且越来越难找到 我试图根据自己的需要修改脚本,但很难 所以,我在网上找到了这个脚本,但它不太管用。怎么了未捕获的语法错误:意外标识符:lin23 <script> function number_format(a, b, c, d) { a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b); e = a + ''; f = e.split('.');

我找到了几个使用英语/美国货币的脚本,但我需要葡萄牙语,而且越来越难找到

我试图根据自己的需要修改脚本,但很难

所以,我在网上找到了这个脚本,但它不太管用。怎么了<代码>未捕获的语法错误:意外标识符:lin23

<script>
function number_format(a, b, c, d) {
    a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
    e = a + '';
    f = e.split('.');
    if (!f[0]) {
        f[0] = '0';
    }
    if (!f[1]) {
        f[1] = '';
    }
    if (f[1].length < b) {
        g = f[1];
        for (i=f[1].length + 1; i <= b; i++) {
            g += '0';
        }
        f[1] = g;
    }
    if(d != '' && f[0].length > 3) {
        h = f[0];
        f[0] = '';
        for(j = 3; j < h.length; j+=3) {
            i = h.slice(h.length – j, h.length – j + 3);
            f[0] = d + i + f[0] + '';
        }
        j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
        f[0] = j + f[0];
    }
    c = (b <= 0) ? '' : c;
    return f[0] + c + f[1];
}

function ValorPorExtenso(valor) {

if (!valor) return 'Zero';

var singular = ["centavo", "real", "mil", "milhão", "bilhão", "trilhão", "quatrilhão"];
var plural = ["centavos", "reais", "mil", "milhões", "bilhões", "trilhões", "quatrilhões"];

var c = ["", "cento", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos"];
var d = ["", "dez", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa"];
var d10 = ["dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezesete", "dezoito", "dezenove"];
var u = ["", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove"];

var z = 0;

valor = valor.toString();
valor = number_format(valor, 2, '.', '.');
alert(valor);
var inteiro = valor.split(/\./);

for (var i = 0; i < inteiro.length; i++) {
inteiro[i] = inteiro[i].toString();
for (var ii = inteiro[i].length; ii < 3; ii++) {
inteiro[i] = '0' + inteiro[i];
}
}

var fim = inteiro.length – ( inteiro[inteiro.length-1] > 0 ? 1 : 2 );

var rc, rd, ru;
var r, t;
var rt = '';
var valor_split;
for (var i = 0; i < inteiro.length; i++) {

valor = inteiro[i];
valor_split = valor.match(/./g);

rc = ((valor > 100) && (valor < 200)) ? 'cento' : c[valor_split[0]];
rd = (valor_split[1] < 2) ? '' : d[valor_split[1]];
ru = (valor > 0) ? ((valor_split[1] == 1) ? d10[valor_split[2]] : u[valor_split[2]]) : '';

r = rc + ((rc && (rd || ru)) ? ' e ' : '') + rd + ((rd && ru) ? ' e ' : '') + ru;
t = inteiro.length – 1 – i;

r = r + (r ? ' ' + (valor > 1 ? plural[t] : singular[t]) : '');
if (valor == '000') z++;
else if (z > 0) z–;

if ((t==1) && (z>0) && (inteiro[0] > 0)) {
r = r + ((z>1) ? ' de ' : '') + plural[t];
}
if (r) {
rt = rt + (((i > 0) && (i <= fim) && (inteiro[0] > 0) && (z < 1)) ? ( (i < fim) ? ', ' : ' e ') : ' ') + r;
}

}

return (rt ? rt : 'zero');

}

alert(ValorPorExtenso(8916165));
</script>

函数编号\u格式(a、b、c、d){
a=数学圆(a*Math.pow(10,b))/Math.pow(10,b);
e=a+“”;
f=e.分裂('.');
如果(!f[0]){
f[0]=“0”;
}
如果(!f[1]){
f[1]='';
}
if(f[1]。长度100)和&(valor<200))?“cento”:c[valor_split[0];
rd=(valor_split[1]<2)?“”:d[valor_split[1];
ru=(valor>0)?((valor_-split[1]==1)?d10[valor_-split[2]]:u[valor_-split[2]]:“”;
r=rc+((rc&&(rd|ru))?'e':'')+rd+((rd&&ru)?'e':'')+ru;
t=内部长度–1–i;
r=r+(r?“”+(valor>1?复数[t]:单数[t]):“”);
如果(valor='000')z++;
否则,如果(z>0)z–;
如果((t==1)&&(z>0)&&(inteiro[0]>0)){
r=r+((z>1)‘de’:“”)+复数[t];
}
if(r){
rt=rt+((i>0)和&(i0)和&(z<1))?((i
我知道您按原样复制了代码并粘贴到一个单独的文件中。某些字符的编码有问题。例如,so“-”的编码不正确,所以请替换它们

i = h.slice(h.length – j, h.length – j + 3) 
应该是

i = h.slice(h.length - j, h.length – j + 3)
我知道你看不出区别,但这两个角色是不同的


看看修改后的代码:

哪一行是23?
i=h.slice(h.length–j,h.length–j+3);
你自己在做缩微器的工作?让你的代码可读,让缩微器来做缩微器的工作。啊,我现在明白了,你的意思是字符“-”与-减号不同。我为你更改了它们。