Wie entfernen, Zeilenumbruch beim Lesen von Dateien in Ruby
Ich versuche, loszuwerden, die Klammern []
und die neue Linie \n
gedruckt werden.
Mein code sieht wie folgt aus:
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
Möchte ich die Ausgabe um zu schauen wie JoshBobbyGreen
.
Allerdings sieht es so aus:
[\"Josh\\n\"][\"Bobby\\n\"][\"Green\\n\"]
Ich habe versucht, mit .gsub
, chomp
und split
aber vielleicht verwende ich Sie falsch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code hat ein minor-Problem, das bewirkt, dass die Ergebnisse, die Sie erleben.
wenn Sie:
Ist der zurückgegebene Wert NICHT ein String, sondern ein Array mit 1 random sample. ich.e:
Dies ist, warum Sie erhalten die Ausgabe
["Jhon"]
bei der Verwendungprint
.Da Sie erwarten (und bevorzuge) ein string ist, versuchen Sie dies:
oder:
oder, wohl, was Sie meinte, ohne Argumente
sample
zurückkehren wird ein Objekt statt einem Array:Auch beim drucken, es wäre besser, wenn Sie erstellt eine Zeichenfolge, die alle Räume und die Formatierung, die Sie wollte. also:
stellt fügt einen Zeilenumbruch am Ende der Ausgabe. drucken nicht.
Verwenden Sie Druck. Es wird das Problem möglicherweise behoben. Auch, verwenden .strip.
fullname.rb:36:in
- strip': falsche Anzahl von Argumenten (1 0) (ArgumentError) von yahoo.rb:36:in<main>'
Wenn:
es ist einfach:
&:strip
genau? da bekomme ich einein map undefined method strip, for...
map(&:strip)
ergibt dasselbe Ergebnis wiemap { |s| s.strip }
.&:strip
war ein Tippfehlername1
,name2
undname3
sind Zeichenketten und die Klasse string hat sicherlich eine Methodestrip
. Der code läuft bei mir gut mit Ruby v2.2 (und ich glaube nicht, dass könnte es sein eine version Ausgabe). Hast du meine Definitionenname1
,name2
undname3
? Wenn nicht, würde ich wissen müssen, werden die Werte dieser Variablen, um das problem zu diagnostizieren.Array#sample(n)
gibt ein array zurück, es gibt keinestrip
Methode inArray
map
,String#strip
aufgerufen wird, wird auf jedes element des Arrays[name1,name2,name3]
, das ist ein string.name1
ist ein Array.So vermeiden Sie redundante
\n
's würde ich eher verwendensplit
:So, wie Sie es vermeiden array verwenden
sample
- Methode ohne Argumente: