2013-06-28 157 views
5
var str = name.toUpperCase(); 
var ch = new Array(); 
ch = str.split(''); 

for(var i=0;i<7;i++) 
{ 
    if(ch = null) { 
    result_code.replace(
     pos.toString()+pos.toString()+pos.toString()+pos.toString(), 
     "FFFF"); 
    } else { 
    var temp = parseInt(ch[i]); 
    var temp_integer = 64; 
    if(temp<=122 & temp>=97) { 
     var pos = i+1; 
     result_code.replace(
     pos.toString()+pos.toString()+pos.toString()+pos.toString(), 
     (temp - temp_integer)+40); 
    } 
    } 
} 

此代码在此行创建错误result_code.replace(pos.toString()+pos.toString()+pos.toString()+pos.toString(), (temp - temp_integer)+40);参数类型数量不可分配给参数类型字符串|功能

带下划线的信息是本节(temp - temp_integer)+40

显示的错误是Argument type Number is not assignable to parameter type String|Function

这段代码有什么问题?我正在使用WebStorm。我很可能只是犯了一个愚蠢的错误。提前致谢!

+1

如果你想重复一个字符串,你可以做'新的Array(5)。加入(POS)' – elclanrs

+1

@elclanrs:'a..z',但我敢肯定有一个更好的办法。 – paxdiablo

+1

把一个'+ “”'后+ 40 – JoshRagem

回答

12

replace方法接受一个字符串或函数作为第二个参数。将您的值转换为字符串:((temp - temp_integer)+40).toString()

+0

谢谢!不能相信我错过了这一点。一旦它允许我会设置接受的答案。 – Chris

+0

数字第二个参数适合我。 – 2015-10-27 05:20:48

+0

@torazaburo:你在使用Webstorm吗? – Guffa

3
(temp - temp_integer)+40 

是一个数值,replace想要一个字符串。只需使用:

(temp - temp_integer)+40+"" 

假设你想要的号码(例如,65成为"65")的字符串表示。如果你想在那个代码点(65成为"A")的字符,你应该考虑使用String.fromCharCode()

+0

谢谢!不能相信我错过了这一点。可悲的是,接受的答案去了@Guffa(他是第一个,对不起) – Chris

+3

_Damn_那八秒钟:-) – paxdiablo

相关问题