Преобразование строк в целые и игнорирование двоеточий - PullRequest
0 голосов
/ 19 декабря 2011

Я хочу преобразовать две строки в целые, чтобы иметь возможность сравнивать их.

Строки являются таймерами, поэтому я в основном хочу преобразовать, как показано ниже:

timer1 = 00:00:14 // 14
timer2 = 00:00:25 // 25

Ответы [ 5 ]

1 голос
/ 19 декабря 2011

Попробуйте использовать регулярные выражения и неявное преобразование строки-> числа (например, "7" * 1 = 7)

function timeToSeconds(s)
{
   var m =  s.match(/(\d{2}):(\d{2}):(\d{2})/);
   /* capture time fields in HH:MM:SS format */
   if (m == null)
      return null;
   else
      return m[1]*3600 + m[2]*60 + m[3]*1;
}
1 голос
/ 19 декабря 2011

Вы можете сделать что-то вроде этого:

var s = '00:01:05';
var seg = s.split(':');
var hours = parseInt(seg[0]);
var minutes = parseInt(seg[1]);
var seconds = parseInt(seg[2]);

var total = (hours * 3600) + (minutes * 60) + seconds;
window.alert(total);
1 голос
/ 19 декабря 2011

Шаг первый - удалить двоеточия:

var str1 = "00:00:14";
str1 = str1.replace (/:/g, "");

Шаг второй - взять оставшееся число и превратить его в число.parseInt вернет 0 для строки типа «000014», так что вы можете использовать parseFloat:

var result = parseFloat(str1);

Удачи!

ОБНОВЛЕНИЕ: Я не рассматривал проблему с базовой 10.... это сработает, если вы просто захотите сравнить, какое время больше, но для более "правильного" сравнения реальных раз вы можете сначала преобразовать оба в формальные Date объекты.

1 голос
/ 19 декабря 2011

Приведенный ниже фрагмент удаляет все точки с запятой с помощью регулярного выражения, соответствующего всем вхождениям :, и преобразует его в число, используя parseInt. Если строка timer1 неверна, результатом будет NaN.

numeric_timer1 = parseInt(timer1.replace(/:/g, ""), 10)

Это удовлетворяет ваш буквальный запрос на "преобразование строк в целые и игнорирование двоеточий".

Если вы заинтересованы в преобразовании hour:minute:seconds в секунды, разбейте строку с помощью метода timer1.split(":") и примените математические вычисления.

0 голосов
/ 19 декабря 2011

Вы можете сравнить эти строки как строки, и все должно работать нормально, если эти сегменты действительно всегда являются двузначными сегментами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...