Comment faire pour supprimer le saut de ligne lors de la lecture de fichiers en Ruby
Je suis en train d'essayer de se débarrasser des crochets []
et la nouvelle ligne de \n
d'être imprimé.
Mon code ressemble à ceci:
name1 = File.readlines('first.txt').sample(1)
name2 = File.readlines('middle.txt').sample(1)
name3 = File.readlines('last.txt').sample(1)
name = print (name1.strip
print name2.strip
print name3.strip)
puts name
Je voudrais la sortie de ressembler à JoshBobbyGreen
.
Cependant, il semble:
[\"Josh\\n\"][\"Bobby\\n\"][\"Green\\n\"]
J'ai essayé d'utiliser .gsub
, chomp
et split
mais peut-être que je suis en tort.
Vous devez vous connecter pour publier un commentaire.
Votre code a un problème mineur qui provoque les résultats que vous rencontrez.
lorsque vous utilisez:
La valeur retournée N'est PAS une Chaîne de caractères, mais plutôt un Tableau avec 1 échantillon aléatoire. j'.e:
C'est pourquoi vous obtenez la sortie
["Jhon"]
lors de l'utilisation deprint
.Puisque vous attendent (et préférez) une chaîne de caractères, essayez plutôt ceci:
ou:
ou, probablement ce que vous voulez dire, sans arguments,
sample
retourne un objet au lieu d'un Tableau:Aussi, lors de l'impression, il serait mieux si vous en avez créé une chaîne de caractères à inclure tous les espaces et la mise en forme que vous vouliez. c'est à dire:
met ajoute une nouvelle ligne à la fin de la sortie. d'impression ne fonctionne pas.
L'utilisation de l'impression. Il peut résoudre votre problème. Aussi, l'utilisation .la bande.
fullname.rb:36:in
strip": mauvais nombre d'arguments (1 0) (ArgumentError) à partir de yahoo.rb:36:<main>'
Si:
c'est juste:
&:strip
exactement? parce que je reçois unin map undefined method strip, for...
map(&:strip)
donne le même résultat quemap { |s| s.strip }
.&:strip
était une faute de frappename1
,name2
etname3
sont des chaînes de caractères et de la Classe string a certainement une méthodestrip
. Le code fonctionne très bien pour moi avec Ruby v2.2 (et je ne pense pas que ça puisse être une version de l'émission). Avez-vous utiliser mon définitionsname1
,name2
etname3
? Si non, j'aurais besoin de connaître les valeurs de ces variables pour diagnostiquer le problème.Array#sample(n)
retourne un tableau, il n'y a passtrip
méthode dansArray
map
,String#strip
est appelée pour chaque élément du tableau[name1,name2,name3]
, qui est une chaîne de caractères.name1
est un Tableau.Afin d'éviter toute redondance
\n
's je préfère utilisersplit
:Afin d'éviter que la matrice de l'utilisation
sample
méthode sans argument: