2010-07-21 5 views
2

루비에서 플랫 파일을 만들려면 어떻게해야합니까?루비에서 플랫 파일을 만드는 방법

플랫 파일에는 각 문자가 파일의 특정 열 번호에 배치됩니다.

그래서 예를 들어 나는 DB에서 일부 값을 읽고 있습니다 경우 :

Name   Class 
------------------- 
one   A 
two   English 
three  Math 
four   Science 

을 나는 이름이 10 열 1 사이에있는 곳에서 플랫 파일을 만들고 싶어하고 클래스가 될 것입니다 20 번부터 30 번까지의 열 사이에 어떻게 파일을 만들 수 있습니까? 파일에 쓰는 방법을 알고 있지만 파일에 쓰는 방법을 모르지만 지정된 열을 ...?

나는

C:\>ruby parse.rb 
2342342423 
SOMETHING 
2342 
01/03/2010SDSDFS 
234234 
sprintf on array  2342342423SOMETHING 2342  01/03/2010SDSDFS234234 
+0

에서 작동이 잘되는 것 같습니다. 여전히 문제가 있습니까? 어쩌면 각 분야에 더 많은 공간이 필요할 것입니다. –

답변

3

당신은 sprintf을 사용할 수 있습니다 믈라덴 Jablanović 응답에서의 sprintf 시도 (또는 이에 상응하는 String#%) 패딩 필드 : 당신의 printf 문자열을 사용하지 않으려면

"%-10s%-10s%-10s" % ['two', '', 'English'] 
#=> "two     English " 
+0

나는 거의 정확한 단어를 타이핑하고 있었다! –

+0

배열과 함께 작동하지 않습니까? –

+0

마약 내 배열에'' '''이 없다고 생각합니다 –

1

당신 ljust 및 rjust 메소드를 사용할 수도 있습니다. 문자열이 아닌 데이터를 가지고 있다면 to_s 호출을 던져야 할 수도 있습니다. 그러나 printf가 더 좋을 수도 있습니다.

puts "#{name.ljust(10)} #{subject.ljust(10)}" 
# => "Three  English" 

당신은 당신이 당신과 같이 포맷하고 헤더를 처리 할 수 ​​할 수있는 FormatR gem, 조사 할 수 있습니다 자신이 더 심각한 서식을 필요로 찾아 펄이나 포트란 (나는 생각한다)에서 형식에 익숙하다면, 바닥 글 , 페이지 크기 등. 다음은 간단한 SNIPPIT입니다 :

@)  @<<<<<<<<<<<<<<<<  @#.## 
num, location,    toe_size 

그리고 결과

1)  Market     3.50 
관련 문제