2017-01-16 5 views
1

私は何かが分かりません。私は、テキストファイルで区切られたタブである文字列を持っています。ファイルから文字列を読み込み、Rubyのタブで分割する

hello world foo bar 

だから、各それらの単語のテキストファイルで、それらの間のタブがあります。私はここでは、テキストファイルのように見えるものである引数

にそれを読んで。

私は今、私は単にタブの分離によって単語を分割したい変数

line = "" 
File.open("some_file", "r+") do |file| 
    line = file.gets 
end 

にそれを読む:

word1, word2, word3, word4 = line.split("\t") 

しかし何が起こっているのかは、それはすべての単語を入れているということです最初の変数には他の変数はゼロにしておきます

p word1 
=> "hello world foo bar" 

p word2 
=> nil 

p word3 
=> nil 

p word4 
=> nil 

私は何が欠けていますか?単語はそれらの変数のそれぞれの中になければなりません。

答えて

1

あなたの文字列がその中に"\t"(のではなく、スペース)が含まれていないので、これは次のとおりです。

words = 'hello world foo bar' 
words.split(' ') 
#=> ["hello", "world", "foo", "bar"] 

それは本当にタブが含まれます場合:

"hello\tworld" 

あなたが実際に分割することができるだろうそれは意図通りです:

"hello\tworld".split("\t") 
#=> ["hello", "world"] 
+0

ああ、私はそれを理解しました。問題は、テキストエディタ(ルビミン)で '.txt'を作成したことです。タブを押すと、実際には2つのスペースが入力されるので、テキストファイルに実際にタブが入力されていないというRubymineの設定が必要です。 TextEditで '.txt'ファイルを開き、そこにタブを置くだけで解決しました。それがトリックでした。その後、私のコードは正常に機能しました。お返事をありがとうございます! – Neil

+0

@ニールうん、それはスペースのときにスペースです:) –

関連する問題