2013-03-27 51 views
0

我有幾個函數旨在將用戶輸入轉換爲字符串爲二進制數字。這是我正在開發的基本「彙編程序」程序的一部分。這裏是我的代碼:如何從字符串中刪除字符,並從新字符串中返回數字 - Javascript

function generateBinaryNumber(inputValue) //only works for hash! 
{ 
    var number; 

    if(containsHash(inputValue) != -1) 
    { 
     number = getNumberFromString(inputValue); 
    } 

    return decimalToBinary(number); 
} 

function containsHash(number) //Working! 
{ 
    var n = number.indexOf('#'); 
    return n; 
} 

function getNumberFromString(mixedInput) //Working! 
{ 
    return (mixedInput.replace('#','')); 
} 

function decimalToBinary(decimal) //Working! 
{ 
    decimal = parseInt(decimal); 
    return decimal.toString(2); 
} 

如果用戶輸入例如的「5」值,函數返回NaN - 但是,如果他們指定#5它的工作原理 - 返回101。我是編程和Javascript新手,如果任何人都可以指出我的方向,那就太棒了。謝謝!

+0

什麼問題? – isherwood 2013-03-27 01:03:45

回答

0

你沒有通過輸入如果沒有#

function generateBinaryNumber(inputValue) //only works for hash! 
{ 
    var number; //number is not set 

    if(containsHash(inputValue) != -1) 
    { 
     //number is set here, but only if the if statement is true 
     number = getNumberFromString(inputValue); 
    } 
    //if containsHash was false, number is undefined 
    return decimalToBinary(number); 
} 

您只想說var number=inputValue;你把它聲明

作爲一個側面說明,你也應該基數參數添加到您的parseInt(類似於parseInt(decimal,10)),否則它會將輸入如"010"視爲十六進制數字,並將不正確地解析它。

+0

謝謝Ben!我知道這會是一件愚蠢的事情。乾杯 – moleman 2013-03-27 01:13:51