Question

Je travaille avec les ID OPE. Un fichier a avec deux les zéros de suivi, par exemple, [998700, 1001900]. L'autre fichier les a avec un ou deux zéros pour une menant longueur totale de six ans, par exemple, [009987, 010019]. Je veux convertir chaque ID OPE (dans les deux fichiers) à une chaîne de huit chiffres avec exactement deux zéros principaux et cependant beaucoup de zéros à la fin de l'obtenir soit huit chiffres.

Était-ce utile?

La solution

Essayez ceci:

a = [ "00123123", "077934", "93422", "1231234", "12333" ]
a.map { |n| n.gsub(/^0*/, '00').ljust(8, '0') }

=> ["00123123", "00779340", "00934220", "001231234", "00123330"]

Autres conseils

Si vous avez vos données analysables et stockées sous forme de chaînes, il pourrait se faire comme ça, par exemple.

n = ["998700", "1001900", "009987", "0010019"]
puts n.map { |i|
    i =~ /^0*([0-9]+?)0*$/
    "00" + $1 + "0" * [0, 6 - $1.length].max
}

Sortie:

00998700
00100190
00998700
00100190

Cet exemple sur CodePad.

Je suis note très sûre cependant, que je suis la description tout à fait exact. S'il vous plaît vérifier les commentaires et je raison dans le cas où ce n'est pas exactement ce que vous recherchez.

Avec l'aide des réponses données par @detunized & @nimblegorilla, je suis venu avec:

"998700"[0..-3].rjust(6, '0').to_sym

pour le premier format que je décrit (toujours avec deux zéros) égal au second.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top