2013-04-19 2 views
2

Date.today 또는 (Date.today - 1)과 같이 동적 날짜가있는 파일을 읽으려고하고 요청한 날짜를 기준으로 코드를 수행하려고합니다.문자열에서 날짜를 어떻게 실행합니까?

날짜가 따옴표로 묶인 문자열이 있으면 작동합니다. 파일에서 같은 문자열을 읽을 때 그렇지 않습니다. eval 기능이 작동하도록 사용해야합니까? 있는 test.txt 파일의

require 'date' 
#Works 
abc = "something #{Date.today}" 
puts abc 
# something 2013-04-19 

#does not work 
f = File.read("test.txt") 
f.each_line { |line| puts line ; words = line.split("\t") 
    puts line 
} 

내용 :

something #{Date.today} 
# something #{Date.today} 
+0

.. . 여기에 코드를 입력하십시오. Thay가 도움이 될 것입니다. – Lemurr

+0

이것은 나의 첫번째 포스트 다. .. 나는 그것을 게시하고있는 문제를 가지고 있었다.. 그래서 그것을 최대한 빨리 편집했다. 어떤 사람이 빨리 게시 할 것으로 기대하지 않았다 :) – user2300908

답변

0

당신은 실제로는 읽기 등 각 라인의 내용을 평가하는 eval를 사용해야 할 것입니다.

그러나 임의 코드를 평가할 것이므로 악성 코드가 아닌 신뢰할 수 있어야합니다.

그래서, 당신은 파일과 라인 신뢰 가정 :은 "코드 조각"으로

require 'date' 
f = File.read("test.txt") 
f.each_line do |line| 
puts eval("\"#{line}\"") 
end 

공지 큰 따옴표 포장을, 당신은 요구 사항을 평가하는 것은 (는 "유효"루비 문자열이어야합니다 다시 코드를 포함하는, 그래서 당신은 실제 이중 인용 문자열로 나타나도록 따옴표로 감싸

을 TEST.TXT가 보이는 경우가 작동합니다. 기록 된대로

Hello, #{Date.today} 
Goodbye, #{Date.today} 
+0

내가 틀릴 수도, 내가 그것을 OCRA를 사용하여 패키지 계획이기 때문에 내가 다른 사람에게 배포하는 경우 평가 작업을합니까? . 내 자신을 시도하지만 확인하고 확인하고 싶다. – user2300908

+0

완벽하게 작동했습니다. 나는이'eval'을 생각하고 있었지만 당신의 eval 예제를 사용하여 잘 작동했다. :) – user2300908

관련 문제