2010-07-21 6 views
2

comment puis-je créer un fichier plat dans ruby?comment créer un fichier plat dans ruby ​​

Fichier plat est là chaque lettre est placée à un numéro de colonne spécifique dans le fichier.

Ainsi, par exemple, si je lis certaines valeurs de la DB:

Name   Class 
------------------- 
one   A 
two   English 
three  Math 
four   Science 

et je veux faire un fichier plat sur elle où les noms doivent être entre les colonnes 1 à 10 et la classe est d'être entre les colonnes 20 à 30. Comment puis-je faire ce fichier? Je sais comment écrire dans un fichier mais je ne sais pas comment écrire dans un fichier ... avec des colonnes spécifiées ...?

J'ai essayé sprintf de Mladen Jablanovic réponse

C:\>ruby parse.rb 
2342342423 
SOMETHING 
2342 
01/03/2010SDSDFS 
234234 
sprintf on array  2342342423SOMETHING 2342  01/03/2010SDSDFS234234 
+0

On dirait que ça fonctionne très bien. Avez-vous encore un problème? Peut-être avez-vous besoin de plus d'espace pour chaque champ. –

Répondre

3

Vous pouvez utiliser sprintf (ou son équivalent String#%) avec des champs rembourrés:

"%-10s%-10s%-10s" % ['two', '', 'English'] 
#=> "two     English " 
+0

Je tapais presque les mots exacts! –

+0

cela ne fonctionne pas avec les tableaux? –

+0

dope je pense que mon tableau n'a pas '' '' –

1

Si vous ne voulez pas utiliser des chaînes printf vous peut également utiliser les méthodes ljust et rjust. Si vous avez des données non-chaîne, vous devrez peut-être lancer un appel à to_s, mais à ce stade, printf peut être meilleur.

puts "#{name.ljust(10)} #{subject.ljust(10)}" 
# => "Three  English" 

Si vous vous trouvez besoin de mise en forme plus grave et sont familiers avec les formats de Perl ou Fortran (je pense) que vous pouvez regarder dans le FormatR gem, ce qui vous permet de formater comme tant et peut traiter avec les en-têtes, pieds de page , les tailles des pages et autres. Voici simple snippit:

@)  @<<<<<<<<<<<<<<<<  @#.## 
num, location,    toe_size 

et les résultats dans

1)  Market     3.50 
Questions connexes