Достаем число из строки любой сложности.

Sep 16, 2013 03:02

Задача - получить число из строки любой сложности, если в строке - десятичное число, нужно его достать.

Код функции:

function parseNumber(str) {
      // Делим строку на двое, используя как разделитель точку или запятую.
      var split = str.match(/([^.,]*)[.,]?(.*)/);

// Целая часть числа
      var first = split[1].replace(/[^0-9]/g, '');

// Дробная часть числа
      var second = split[2].replace(/[^0-9]/g, '');

return (first + '.' + second) * 1 || 0;
  }
Результаты:
'test' => 0
'test4' => 4
'2test4' => 24
'2te.st4' => 2.4
'2te.st4000' => 2.4
'0.0' => 0
'0.1 3' => 0.13
'.234' => 0.234

Объяснение словами:
Строку, содержащую число делим на две части, используя как разделитель первую попавшуюся точку или запятую.
Из каждой половинки убираем все не цифры.

В конце мы соединяем обе половинки и умножаем их на единицу, чтобы получить число. При этом, мы можем получить NaN, поэтому дописываем "|| 0", чтобы всегда на выходе получалось число, даже, если это 0.

яваскрипт, функция

Previous post Next post
Up