Как проверить, имеет ли номер -
, +
, x
или ничего перед ним?проверить, есть ли число -, + или x
Варианты проверки будет:
20
+20
-20
x20
20 быть любое количество.
Как проверить, имеет ли номер -
, +
, x
или ничего перед ним?проверить, есть ли число -, + или x
Варианты проверки будет:
20
+20
-20
x20
20 быть любое количество.
Если вы хотите, чтобы быть немного более гибкими и позволяют пробелы, так что вы искали первый непробельный символ, который приходит до цифры, вы могли бы использовать регулярное выражение:
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/
Добавлена функция для моего ответа, которая вернет оба префикса и числа. – jfriend00
Я надеюсь, что это не домашнее задание! Вот такая функция, что для ряда возвращает -1, 0 или 1, в зависимости от того, является ли число является отрицательным, нулевым или положительным, с кредитом на A1ien51:
function sgn(x)
{
if(x>0)return 1;
else if(x<0)return -1;
else return 0;
}
Вы можете использовать встроенный string.charAt()
функция для поиска первого символа строки.
Например:
var myString = "...";
if(myString.charAt(0) == '+') //do something
else if(myString.charAt(0) == 'x') //do something else
...
Примера с использованием регулярных выражений, чтобы захватить первую часть и возвращает объект. Примечание: это были внесены изменения, чтобы принять несколько префиксов и с плавающей запятой числа
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
Спасибо за это @ vol7ton. Что бы я добавил, чтобы он возвращал число, а также значение и знак? – Cybercampbell
тоже .. Мне понадобится 'hasSign ('20 '); // {value: true, sign: ""} 'вернуть true .. это можно сделать легко? Я не знаю RegExp. Собираюсь немного почитать его сегодня вечером. – Cybercampbell
@cybercampbell: проверьте его сейчас – vol7ron
Как @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>
Это домашнее задание? 'string.indexOf()' –
Вы * пробовали * что-нибудь самостоятельно? – Matt
Вы говорите о струнах или цифрах? «-20» имеет перед собой «-», но -20 - отрицательное число, и на самом деле нельзя сказать, что у него что-то есть. это «x» в этом случае буква или вы хотите представить произвольное значение? –