2013-06-28 12 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); 
    } 
    } 
} 

Ten kod tworzy błąd w tym wierszu result_code.replace(pos.toString()+pos.toString()+pos.toString()+pos.toString(), (temp - temp_integer)+40);.Typ argumentu Liczba nie jest przypisywana do typu parametru String | Function

Podkreśloną informacją jest ta sekcja (temp - temp_integer)+40.

Wyświetlany błąd to Argument type Number is not assignable to parameter type String|Function.

Co jest nie tak z tym kodem? Używam WebStorm. Prawdopodobnie popełniam głupi błąd. Z góry dziękuję!

+1

Jeśli chcesz powtórzyć ciąg, możesz zrobić 'nowy Array (5) .join (pos)' – elclanrs

+1

@elclanrs: 'a..z', ale jestem pewien, że jest lepszy sposób. – paxdiablo

+1

Umieść '+" "' po + 40 – JoshRagem

Odpowiedz

12

Metoda replace akceptuje ciąg lub funkcję jako drugi parametr. Zmień wartość na ciąg znaków: ((temp - temp_integer)+40).toString().

+0

Dzięki! Nie mogę uwierzyć, że to przegapiłem. Ustawi zaakceptowaną odpowiedź, gdy mi pozwoli. – Chris

+0

Drugi argument numeryczny działa dobrze dla mnie. –

+0

@torazaburo: Czy korzystasz z Webstorm? – Guffa

3
(temp - temp_integer)+40 

jest wartością liczbową i replace chce ciąg. Wystarczy użyć:

(temp - temp_integer)+40+"" 

zakładając, że chcesz znaków reprezentujący liczbę (np 65 staje "65"). Jeśli chcesz, aby znak w tym punkcie kodowym (65 stał się "A"), powinieneś sprawdzić, używając String.fromCharCode().

+0

Dzięki! Nie mogę uwierzyć, że to przegapiłem. Niestety, przyjęta odpowiedź trafia do @Guffa (był pierwszy, przepraszam) – Chris

+3

_Damn_ te osiem sekund :-) – paxdiablo