9
votes

Formatage des chaînes, supprimer des caractères principaux

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


0 commentaires

5 Réponses :


0
votes

EDIT: L'OP voulut ceci depuis le début:

seconds = seconds.to_i
if seconds >= 60
  "#{seconds/60}:#{seconds%60}"
else
  "#{seconds}"
end


2 commentaires

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



3
votes

Vous pouvez utiliser quelque chose comme Peter dit, mais serait correctement:

s = "00:11:40".split(":")[1,2].join(":")


0 commentaires

0
votes

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


1 commentaires

Pas besoin de quatre regex différentes et de 15 lignes de code pour le faire! Un seul .sub (/ ^ [0:] * /, "") fonctionne bien!



23
votes

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 xxx

qui fonctionne exactement comme vous le former: commencer Au début de la chaîne, retirez tous les 0 et: s.


2 commentaires

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" résultats dans "23" qui semble impair. Mais aucune infraction, c'est toujours exactement ce que l'OP a demandé.



0
votes

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>


0 commentaires