2016-02-01 3 views
0

У меня есть эти входы:Как преобразовать строку в 0, если она не содержит цифр?

var str1 = "21"; 
var str2 = "1."; 
var str3 = "5. test" 
var str4 = "- something"; 

Я хочу это выходы:

// 21 
// 1 
// 5 
// 0 

  • Первый случай не нужно конвертировать.
  • Second кейс необходимо использовать Number();.
  • Третий кейс используя .replace(/(\d)/g, "$1");.
  • Но как я могу сделать четвертый чехол? На самом деле я хочу заменить строку 0, если она не содержит номер.

Мой вопрос кажется простым, но это 30мин, который я думал об этом и до сих пор я не мог решить.

+0

проверить, если первый элемент номер ... если не чем назначить 0 ему –

+0

@YoYo Он возвращает 'NaN' – stack

+0

чек на первый элемент для STR4 только потому, что 1. также возвращает NaN ,,, правая –

ответ

2

isNaN() и parseInt()

var str1 = "21"; 
 
var str2 = "1."; 
 
var str3 = "5. test" 
 
var str4 = "- something"; 
 

 
console.log(isNaN(parseInt(str1)) ? 0 : parseInt(str1)); 
 
console.log(isNaN(parseInt(str2)) ? 0 : parseInt(str2)); 
 
console.log(isNaN(parseInt(str3)) ? 0 : parseInt(str3)); 
 
console.log(isNaN(parseInt(str4)) ? 0 : parseInt(str4));

+0

как он может использовать это ... так как '1.' также возобновит NaN ,,, так что он должен назначить ему 0 ???? –

+0

Он возвращает правильные значения, проверяет мой фрагмент –

2

вы можете сказать, если число (yourString) = NaN распечатайте 0

+0

'Number (" 5. test ")' также приведет к NaN. – krisk

+0

В этом случае я рекомендую использовать charAt (0), чтобы проверить, имеет ли он целое число в начале или нет. если это так, вы можете проверить следующий символ (charAt (1)), пока он не вернет что-то, а не число или оно закончится. вы можете проверить, является ли возвращенный символ числом или нет, проверяя его код aasci. –

1
var patt = /([0-9]+)/, 
     match = patt.exec(str); 
    if (!match) 
     str = 0; 
    else 
     str = match[1]; 

Это будет соответствовать первый номер из строки.

+0

Я хочу, чтобы это условие было «истинным», а затем возвращает такое число ...! – stack

+0

Этот код будет печатать 0, если в строке нет номера. Если я получу ваш вопрос. – krisk

+1

Хорошо, я все понял. Вы хотите проверить все условия. Я добавляю редактирование. – krisk

1
var str4 = "- something"; 
str4 = (str4.match(/\d+/g)) ? str4 : 0; 
Смежные вопросы