Comment puis-je sortie de zéros en Ruby?
Je suis sortie un ensemble de fichiers numérotés à partir d'un script Ruby. Les chiffres proviennent de l'incrémentation d'un compteur, mais pour les faire trier bien dans le répertoire, je voudrais utiliser les zéros non significatifs dans les noms de fichiers. En d'autres termes
file_001...
au lieu de
file_1
Est-il un simple façon d'ajouter des zéros non significatifs lors de la conversion d'un nombre en une chaîne de caractères? (Je sais que je peux le faire "si moins de 10.... si moins de 100").
Vous devez vous connecter pour publier un commentaire.
Si le nombre maximal de chiffres du compteur est connu (par exemple, n = 3 pour les compteurs de 1..876), vous pouvez le faire
%
fonctionne mais est plus d'usage général.Utiliser le
%
opérateur avec une chaîne de caractères:La partie gauche est un format de printf, et le côté droit peut être une liste de valeurs, de sorte que vous pourriez faire quelque chose comme:
Voici un printf format de feuille de triche que vous pourriez trouver utiles dans la formation de votre chaîne de format. Le format de printf est à l'origine de la
C
fonctionprintf
, mais même le formatage de fonctions sont disponibles en perl, ruby, python, java, php, etc.Kernel#sprintf
, qui est documenté ici: ruby-doc.org/core-1.9.3/Kernel.html#method-i-sprintfsprintf("%03d", 5)
.Ne pouvez-vous pas simplement utiliser mise en forme de chaîne de la valeur avant de vous concat le nom de fichier?
Utilisation
String#suivant
que le comptoir.next
est relativement "intelligent", ce qui signifie que vous pouvez même aller pourfile_000.next!
, trop (modifier la réponse).Comme indiqué par les autres réponses,
"%03d" % number
fonctionne assez bien, mais il va à l'encontre de la rubocop ruby guide de style:Nous pouvons obtenir le même résultat dans un moyen plus lisible en utilisant les éléments suivants: