2017-12-02 13 views
-1

私のコードの出力に問題があります。 何が起こっているかを調べるために、out、in、reoutを追加しました... 空行を印刷しないように、line.length!= 0と行!= 0を追加しようとしましたが、動作しません...ここ が出力されます。Rubyによるテキストファイルへの出力

Going to open 'TextFile.rtf' 
out 
in 

re-out 
out 
in 

re-out 
out 
in 

re-out 
out 
in 

re-out 
out 
in 

re-out 
out 
in 

re-out 
out 
in 

re-out 
out 
in 
66666666 
re-out 
out 
in 
99999999 
re-out 
out 
in 

re-out 
out 
in 
25252525 
re-out 
out 
in 
11111111 
re-out 

マイテキストファイル:

BABA66666666 Hd12 
HEAD99999999 HDAS 
HEAD25252525 A1234 
SSSS11111111 No12 

マイコード:

def HID_num(str) 
    matchtemp = "" 
    temp = str.split(" ") 
    temp.map! do |element| 
     matches = element.match(/\A[A-Z]{4}(\d{8})\z/) 
     next unless matches 
     matchtemp = matches[1] 
    end.compact 
    puts matchtemp 
end 

if ARGV.length != 1 
    puts "We need exactly one parameter. The name of a file." 
    exit; 
end 

filename = ARGV[0] 
puts "Going to open '#{filename}'" 

fh = open filename 

while (line = fh.gets) 
    puts "out" 
    if(line.length != 0) 
     puts "in" 
    HID_num(line) 
    end 
    puts "re-out" 
end 

fh.close 

は助けてくれてありがとう!

+0

あなたが期待している出力は何ですか**?私はあなたの質問が何であるか分かりません。 –

+0

IDが正しいかどうかを確認すると、4大文字の英字、8文字の後ろになります。有効な8桁の数字が返されます。 –

+0

"それは機能しません"というエラーメッセージは、私たちがあなたを助けるほど正確ではありません。 *何がうまくいかない? *どのように動作しませんか?あなたのコードにはどんな問題がありますか?エラーメッセージが表示されますか?エラーメッセージとは何ですか?結果はあなたが期待している結果を得ていないのですか?あなたはどんな結果を期待していますか、そしてなぜ、あなたはどのような結果を得ていますか、そしてその二つの違いは何ですか?あなたが観察している行動は、望ましい行動ではありませんか?望ましい行動とは何か、なぜ行動が観察され、どのように違うのですか? –

答えて

0

があなたの主な方法は、混乱のビットです:

def HID_num(str) 
    matchtemp = "" 
    temp = str.split(" ") 
    temp.map! do |element| 
    matches = element.match(/\A[A-Z]{4}(\d{8})\z/) 
    next unless matches 
    matchtemp = matches[1] 
    end.compact 
    puts matchtemp 
end 

あなただけ印刷に試合をしたいので、ここではmapまたはcompactを使用する必要はありません。期待通りそれでも一致が見つからなかったとしても、空の文字列(matchtemp = "")を、印刷されたので、あなたのオリジナルバージョンが働いていなかった

def HID_num(str) 
    str.split(" ").each do |element| 
    matches = element.match(/\A[A-Z]{4}(\d{8})\z/) 
    puts matches[1] if matches 
    end 
end 

:あなたはこれを行うことができます。

+0

ありがとうございました! –

関連する問題