11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous.

J'ai différentes chaînes représentant des temps de chronomètre :

exemples:
1'00"00 pour 1 minute
0'45"00 pour 45 secondes
0'30"65 pour 30 secondes et 65 centièmes

J'aimerais les faire passer dans une fonction Javascript qui retire toutes les valeurs égales à 0 :

1'00"00 => 1'
0'45"00 => 45"
0'30"65 => 30"65

Pour l'instant j'ai codé ceci :
function retireZero(temps){
	var sTemps = temps.split(/['"]/), sL = sTemps.length;
		for(var i=0;i<sL;i++){
			if(parseInt(sTemps[i],10)===0){
				sTemps[i]='';
			}
		}
	return sTemps.join('');
}

Mais le problème forcément c'est que je perds mes unités (les guillemets) en sortie...

Une idée ?[/i][/i]
Modifié par Ziltoid (07 Sep 2011 - 11:51)
Bonjour,

C'est peut-être pas génial comme code, mais ça fonctionne!
var tps = "0'30\"72"; // ne pas oublier l'anti-slash!
var T ="";

function retireZero(temps){
	var sTemps = temps.split(/['"]/), sL = sTemps.length; // sL vaut toujours 3 !!
	for(var i=0;i<sL;i++){
		if(sTemps[i ]=="0" || sTemps[i ]=="00") {sTemps[i ]='';}
	}
	if(sTemps[0]!=""){T=sTemps[0]+"'";}
	if(sTemps[1]!=""){T+=sTemps[1]+'"';}
		else if(sTemps[2]!="" && T!=""){T+='00"';}
		else if(sTemps[2]!="" && T==""){T+='0"';}
	if(sTemps[2]!=""){T+=sTemps[2];}
	alert(T);
}

retireZero(tps);


Cordialement