2013-01-09 2 views
-3

메신저 :gets.chomp를 사용하여 변수를 변경()이 코드를 사용하여 파일에 쓰기를 시도

puts "-------------------- TEXT-EDITOR --------------------" 
def tor(old_text) 
    old_text = gets.chomp # 
end 


$epic="" 

def torr(input) 

    tore= $epic += input + ", " 

File.open("tor.txt", "w") do |write| 
    write.puts tore 
    end 
end 



loop do 
    output = tor(output) 
    torr(output) 
end 

내가 프로그래밍 루비 궁극적 인 가이드를 읽고 그리고 난 새로운을 만들고 싶어 경우를 말한다 파일에 사용하는 메신저 File.open 사용해야합니다. "line one", "line two 어떻게 gets.chomp()를 사용하여이 happend를 만들 수 있습니까? 내 코드를 시험해 보면 내가 무슨 뜻인지 알게 될거야. 고마워.

+1

코드가 무엇을 예정이다 multilined입니까? 당신의 메소드가 더 의미있는 이름을 가진다면 도움이 될 것입니다. –

+0

내 코드가 새로운 파일을 만들어야하고 입력 할 때마다 Enter를 누르거나 새로운 문장을 만들 때마다 새로운 라인을 만들 수 있습니다. 예를 들어'File.open ("tor.txt", "w") 할 때 do | write | write.puts "line one", "line two" end end' 그것은 새로운 줄을 만듭니다. gets.chomp()로 할 수있는 방법을 알고 싶습니다. 새로운 줄을 만들지 않습니다. 내 gets.chomp()에서 무슨 뜻인지 이해합니까? – TorB

답변

2

gets 메서드는 텍스트를 가져 오지만 '입력'을 누르거나 (STDIN\n이되면) 종료됩니다. 이 입력 레코드 분리 문자는 전역 변수 $/에 저장됩니다. 스크립트에서 입력 구분 기호를 변경하면 gets 메서드는 전역 변수를 변경 한 항목에 대해 실제로 'Enter'키를 교환합니다.

$/ = 'EOF' # Or any other string 
lines = gets.chomp 
> This is 
> multilined 
> textEOF 
lines #=> 'This is\nmultilined\ntext' 

원하는대로 입력 한 다음 끝에 'EOF'를 입력하십시오. EOF를 확인하면 gets 메소드가 종료됩니다. chomp 메서드는 실제로 'EOF'문자열을 끝에서 제거합니다.

텍스트 파일에이 내용을 쓰면 \n이 새 줄로 바뀝니다.

File.open('newlines.txt', 'w') {|f| f.puts lines} 

newlines.txt :

이것은

이 텍스트

+0

고마워요 내가 필요한 건 :) – TorB

0

.chomp()를 사용하지 않으면 새 줄을 쓸 때마다 \ n 문자가 추가되고, 파일에 저장하면 새 줄이 생깁니다. .chomp()는 입력 끝에서 이스케이프 문자를 제거합니다.

이 질문에 대한 답변이 없으면 미안하지만 이해가되지 않습니다.

+0

아니 임 미안 내가 그것에 대한 나쁜 제목을 만들 었어 :( – TorB