2010-06-28 8 views
3

J'ai une chaîne en train d'être saisie depuis une page au format "4m 26s", comment puis-je la supprimer en quelques secondes?JavaScript minutes et secondes en secondes

Un grand merci,

+1

Quel est le résultat que vous cherchez: '' 26s' ou 266s'? –

+0

Vous cherchez 266, comme dans 4 * 60 + 26 –

Répondre

2
var str = "4m 26s"; 
var arr = str.split(" "); 
var sec = parseInt(arr[0], 10)*60 + parseInt(arr[1], 10); 

Vous n'avez pas besoin regex si vous utilisez parseInt ...

3

simple regex fonctionnera:

var s = '21m 06s'; 

var m = /(\d{1,2})m\s(\d{1,2})s/.exec(s); 

var mins = parseInt(m[1], 10); 
var secs = parseInt(m[2], 10); 
+0

-1 regexp est inutile – galambalazs

+0

Ceci est un commentaire idiot; vous pourriez techniquement dire regexes sont toujours inutiles. Il résout le problème comme demandé. Je pourrais déprécier votre réponse en disant que l'utilisation de split n'est pas nécessaire. –

+0

non, ici regexp est lente, plus difficile à lire et plus difficile à maintenir, donc complique le problème. vous devriez utiliser regexp quand vous avez une bonne raison pour cela. vous auriez pu éditer votre code mais vous vous disputez plutôt avec moi. – galambalazs

0
var str = "4m 26s"; 
console.log(str.match(/\d+m\s+(\d+)s/)[1]);//26 
2

manière non regex:

Faites un string.split(" ") sur votre chaîne; puis faites string.slice(0, -1) sur les deux tableaux. Multipliez la première entrée par 60. Ajoutez-les ensemble.

Questions connexes