J'ai une chaîne comme ceci: 00:11:40 ou 00:02:40 Comment puis-je former pour que je puisse toujours me débarrasser du (s) zéro (s) principal (s) deux). 11:40 ou 2:40 p>
5 Réponses :
EDIT: L'OP voulut ceci depuis le début:
seconds = seconds.to_i if seconds >= 60 "#{seconds/60}:#{seconds%60}" else "#{seconds}" end
Merci, mais j'ai besoin d'une façon générale de le faire. Je reçois la chaîne à travers une conversion de secondes fois.at (secondes.to_i) .gmtime.strfTime ('% r:% s')
Fermer! J'ai besoin de trouver comment utiliser "gsub" avec certaines regex pour dépouiller les principaux zéros et / ou les deux côtés
Vous pouvez utiliser quelque chose comme Peter dit, mais serait correctement:
s = "00:11:40".split(":")[1,2].join(":")
Vous voudrez peut-être essayer une regex d'aspect positif. Nice Référence
def remove_behind_zeroes(value) exp = /(?<=00:00:)\d\d/ match = exp.match(value) if match then return match[0] end exp = /(?<=00:0)\d:\d\d/ match = exp.match(value) if match then return match[0] end exp = /(?<=00:)\d\d:\d\d/ match = exp.match(value) if match then return match[0] end exp = /\d\d:\d\d:\d\d/ match = exp.match(value) if match then return match[0] end nil
Pas besoin de quatre regex différentes et de 15 lignes de code pour le faire! Un seul .sub (/ ^ [0:] * /, "") fonctionne bien!
Nous appelons ces caractères "principaux", qui ne traîne pas, car ils sont au début, mais la regex pour cela est très facile qui fonctionne exactement comme vous le former: commencer Au début de la chaîne, retirez tous les 0 et: s. P> p>
Certains d'entre nous ne sont que des étudiants humbles de la regex, d'autres ne sont que des maîtres (vous avez devenu votre possible). C'est ce qui se passe lorsque vous TDD à 22 heures HRS. Le refactoring est laissé comme un exercice.
"00:00:23" code> résultats dans
"23" code> qui semble impair. Mais aucune infraction, c'est toujours exactement ce que l'OP a demandé.
Beaucoup de fois que vous pouvez simplement compter sur les techniques de conversion de base, en rubis, par exemple, si vous aviez une chaîne comme "05" et que je voulais juste avoir 5 ans, tu ferais simplement "05" .to_i < / p>