6

[]括弧と新しい行\nが印刷されないようにしようとしています。

私のコードは次のようになります:

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

出力を次のようにしたいと思いますJoshBobbyGreen。ただし、次のようになります。

[\"Josh\\n\"][\"Bobby\\n\"][\"Green\\n\"]

を使ってみましたが.gsub、使い方が間違っているのかもしれません。chompsplit

4

6 に答える 6

12

puts は、出力の最後に改行を追加します。印刷しません。印刷物を使用してください。それはあなたの問題を解決するかもしれません。また、.strip を使用します。

"\tgoodbye\r\n".strip   #=> "goodbye"
于 2015-09-27T02:29:08.217 に答える
3

あなたのコードには、発生している結果の原因となる小さな問題があります。

使用する場合:

name1 = File.readlines('first.txt').sample(1)

戻り値は文字列ではなく、1 つのランダム サンプルを含む配列です。すなわち:

["Jhon"]

["Jhon"]これが、を使用したときに出力が得られる理由ですprint

文字列を期待する(そして好む)ので、代わりにこれを試してください:

name1 = File.readlines('first.txt').sample(1)[0]
name2 = File.readlines('middle.txt').sample(1)[0]
name3 = File.readlines('last.txt').sample(1)[0]

また:

name1 = File.readlines('first.txt').sample(1).pop
name2 = File.readlines('middle.txt').sample(1).pop
name3 = File.readlines('last.txt').sample(1).pop

または、おそらくあなたが意味したことは、引数なしsampleで、配列の代わりにオブジェクトを返します:

name1 = File.readlines('first.txt').sample
name2 = File.readlines('middle.txt').sample
name3 = File.readlines('last.txt').sample

また、印刷中に、必要なすべてのスペースとフォーマットを含む 1 つの文字列を作成した方がよいでしょう。すなわち:

name1 = File.readlines('first.txt').sample(1).pop
name2 = File.readlines('middle.txt').sample(1).pop
name3 = File.readlines('last.txt').sample(1).pop

puts "#{name1} #{name2} #{name3}."
# or
print "#{name1} #{name2} #{name3}."
于 2015-09-27T03:03:40.290 に答える