2011-10-19 8 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

私はこれが宿題ではないと願っています!ここでA1ien51への信用と、このような数の数が負であるかどうかに応じて、-1、0、または1を返す関数、ゼロ、または正、次のとおりです。

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

よう@Michaelが語った、今の

私はあなたにサンプルを与える(例えば-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> 
関連する問題