2011-10-19 53 views
-3

如何檢查數字是否有-,+,x或其前面沒有任何內容?檢查數字是否爲 - ,+或x

選項,檢查是:

20 
+20 
-20 
x20 

20是任何數字。

+0

這功課嗎? 'string.indexOf()' –

+5

你*自己試過什麼? – Matt

+0

你說的是字符串還是數字? 「-20」在它前面有一個「 - 」,但是-20是一個負數,並且不能說真正的東西在它前面。在這種情況下是「x」還是你的意思是表示任意值? –

回答

1

如果你想成爲一個更靈活一點,允許空格,讓你在尋找自帶一個數字之前,你可以使用正則表達式的第一個非空白字符:

var str = " + 20"; 

var match = str.match(/^\s*([^\d])/); 
if (match) { 
    switch(match[1]) { 
     case "+": 
      // put code here to handle this operator 
      break; 
     case "-": 
      // put code here to handle this operator 
      break; 
     case "x": 
      // put code here to handle this operator 
      break; 
     default: 
      // put code here to handle unknown operator 
      break; 
    } 
} 

工作示例這裏:http://jsfiddle.net/jfriend00/fJcQJ/

或者,如果你想將返回前綴和數字功能,你可以做此:

function parseNum(str) { 
    var match = str.match(/^\s*([\+\-x]?)\s*(\d+)/); 
    if (match) { 
     return({ 
      num: parseInt(match[2], 10), 
      prefix: match[1] ? match[1] : "" 
     }); 
    } 
    // nothing found of the right format 
    return(null); 
} 

並且,隨着測試用例一個工作示例:使用正則表達式來捕獲所述第一部分和返回一個對象http://jsfiddle.net/jfriend00/DCxcb/

+0

添加功能,我的答案將返回前綴和數字。 – jfriend00

0

我希望這不是功課!這裏是這樣的,對於一些返回-1,0或1,取決於數是否爲負的函數,零或正,以信譽A1ien51

function sgn(x) 
{ 
    if(x>0)return 1; 
    else if(x<0)return -1; 
    else return 0; 
} 
2

您可以使用內置的string.charAt()函數查看字符串的第一個字符。

例如:

var myString = "..."; 
if(myString.charAt(0) == '+') //do something 
else if(myString.charAt(0) == 'x') //do something else 
... 
1

實施例。注意:它被修訂,以接受多個前綴和浮點數

function hasSign(str){ 
    return { value : /^([-+x])*(\d+\.*\d*)$/.test(str.toString()) 
      , sign : RegExp.$1 
      , number : RegExp.$2 
      }; 
} 

    hasSign(-20); // { value:true , sign:"-"  , number="20" } 
    hasSign(+20); // { value:true , sign:""  , number="20" } 
    hasSign('20'); // { value:true , sign:""  , number="20" } 
    hasSign('20.3'); // { value:true , sign:""  , number="20.3" } <-- float 
    hasSign('-20'); // { value:true , sign:"-"  , number="20" } 
    hasSign('+20'); // { value:true , sign:"+"  , number="20" } 
    hasSign('x20'); // { value:true , sign:"x"  , number="20" } 
    hasSign('a20'); // { value:false , sign:"Object" , number=""  } <-- false 
    hasSign('x'); // { value:false , sign:"Object" , number=""  } <-- false 
+0

感謝@ vol7ton。我會添加什麼來讓它返回數字以及數值和符號? – Cybercampbell

+0

也..我需要'hasSign('20'); // {value:true,sign:「」} '返回true ..可以輕鬆完成嗎?我不知道RegExp ..今晚要去讀一下它。 – Cybercampbell

+0

@cybercampbell:現在檢查 – vol7ron

0

像@邁克爾說,

現在我給你的樣品(如-x20)。

<SCRIPT language="JavaScript"> 
<!-- 
var number="+a"; // your number will use for testing 
where_is_add=number.indexOf('+'); 
where_is_sub=number.indexOf('-'); 
where_is_mul=number.indexOf('*'); 
if(where_is_add==0){ 
    alert('There is + in front of it.'); 
} 
else if(where_is_sub==0){ 
    alert('There is - in front of it.'); 
} 
else if(where_is_mul==0){ 
    alert('There is * in front of it.'); 
} 
else { 
    alert('Nothing in front of it.'); 
} 
</SCRIPT>