2017-11-04 2 views
0

나는 초보자입니다! 줄과 텍스트 줄이 포함 된 텍스트 파일이 있습니다. "larry.bird"라는 문구가있는 줄만 표시하고 다른 줄은 삭제할 수 있도록하는 코드를 만들려고합니다. 이것은 내 현재 코드입니다 ...루비가 텍스트 파일의 특정 줄을 필터링하는 중

File.open("HM.txt").each do |line| 
   puts line 
   if line.include? "larry.bird" 
      puts "larye.bird " + line 
   end 
end 

File.readlines('HM.txt') do |li| 
  puts li if (li['larry.bird']) 
end 

당신이 나를 도울 수 있다면, 그것은 최고 일 것입니다!

답변

1

꽤 가깝습니다. 파일을 열고 읽는 중입니다. 검사를 수행하기 전에 실수로 모든 행을 인쇄하고있는 것입니다. 코드의 두 번째 줄에있는 puts line은이 문제가 발생하지 않도록합니다.

File.open("HM.txt") do |file| 
    file.each_line do |line| 
    if line.include? "larry.bird" 
     puts "larry.bird " + line 
    end 
    end 
end 

우리는 종종 코드를보다 간결하게 접미사 표기법을 사용하여, 루비 문 경우 한 줄을 단축 할 수 있습니다.

File.open("HM.txt") do |file| 
    file.each_line do |line| 
    puts "larry.bird " + line if line.include? "larry.bird" 
    end 
end 

이것은 첫 번째 예와 동일합니다.

+0

IMO는 한 줄의 'if'가 노이즈에서 사라지게 만듭니다 (왼쪽에 너무 많은 절). 대신에,'each_line'은'Enumerator'를 반환하기 때문에,'each_line.reject {| line | line.include? (...)} .each {| line | puts ...}'아마 좋네요. –

관련 문제