2015-10-20 62 views
-1

如何删除下面特定代码中的特殊字符?我一直试图使用var = t替换,但它没有正常工作。当一个人在他们想要转换成单词的数字中输入一个逗号时,它会削减该句子。如何删除此Javascript代码中的特殊字符

谢谢!

var o=new Array("diez", "once", "doce", "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve", "veinte", "veintiuno", "veintidós", "veintitrés", "veinticuatro", "veinticinco", "veintiséis", "veintisiete", "veintiocho", "veintinueve"); 
var u=new Array("cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"); 
var d=new Array("", "", "", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa"); 
var c=new Array("", "ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos"); 

function toWords(n) 
{ 
    var n=parseFloat(n).toFixed(2); 
    var p=n.toString().substring(n.toString().indexOf(".")+1); 
    var m=n.toString().substring(0,n.toString().indexOf(".")); 
    var m=parseFloat(m).toString().split("").reverse(); 
    var t=" "; 


    for (var i=0; i<m.length; i+=3) 
    { 
    var x=t; 

    var b=m[i+1]!=undefined?parseFloat(m[i+1].toString()+m[i].toString()):parseFloat(m[i].toString()); 

    t=m[i+2]!=undefined?(c[m[i+2]]+" "):""; 
    t+=b<10?u[b]:(b<30?o[b-10]:(d[m[i+1]]+(m[i]=='0'?"":(" y "+u[m[i]])))); 
    t=t=="ciento cero"?"cien":t; 
    if (2<i&&i<6) 
     t=t=="uno"?"mil ":(t.replace("uno","un")+" mil "); 
    if (5<i&&i<9) 
     t=t=="uno"?"un millón ":(t.replace("uno","un")+" millones "); 
    t+=x; 
    //t=i<3?t:(i<6?((t=="uno"?"mil ":(t+" mil "))+x):((t=="uno"?"un millón ":(t+" millones "))+x)); 
    } 

    return t; 
} 
+0

你问题不清楚,你想要什么? – rjdmello

+0

当您在该值中输入逗号时,输出被切断。例如,如果你在逗号(5,644)中输入一个逗号,它将表示五个而不是五千四百四十四。 –

回答

0

u有n= parseFloat(n) ...那将考虑昏迷浮点,用​​但这是不正确的拆卸逗号

+0

不,parseFloat会*不考虑逗号作为浮点(它是硬连线使用。作为分隔符,独立于您当前的语言环境)。它只是认为它是非数字并停止解析输入。 –

+0

谢谢SilentTremor!为我工作。删除逗号不会成为我使用的BIRT报告中的一个问题 –

+0

很高兴听到这个消息,是的@保罗 - 扬你是对的。 – SilentTremor

0

ParseFloat不支持千个分隔符。如果你想支持包含这种分隔符的用户输入,你必须手动去除它们。

function toWords(n) 
{ 
    var n=parseFloat(n.replace(',','')).toFixed(2); 
    ... 
+0

谢谢Paul-Jan! –