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

Как @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> 
Смежные вопросы