루비에서 선행 0을 어떻게 출력 할 수 있습니까?
Ruby 스크립트에서 일련 번호가 지정된 파일을 출력하고 있습니다. 숫자는 카운터를 증가시키는 것에서 유래하지만 디렉토리에서 멋지게 정렬하기 위해 파일 이름에 선행 0을 사용하고 싶습니다. 다시 말해
file_001 ...
대신에
file_1
숫자를 문자열로 변환 할 때 선행 0을 추가 하는 간단한 방법이 있습니까? ( "10보다 작 으면 ... 100보다 작 으면"할 수 있음).
카운터의 최대 자릿수가 알려진 경우 (예 : 카운터 1..876의 경우 n = 3), 할 수 있습니다
str = "file_" + i.to_s.rjust(n, "0")
%
문자열과 함께 연산자를 사용하십시오 .
irb(main):001:0> "%03d" % 5
=> "005"
왼쪽은 printf 형식 문자열이며 오른쪽은 값 목록 일 수 있으므로 다음과 같은 작업을 수행 할 수 있습니다.
irb(main):002:0> filename = "%s/%s.%04d.txt" % ["dirname", "filename", 23]
=> "dirname/filename.0023.txt"
다음 은 형식 문자열을 구성하는 데 유용한 printf 형식 치트 시트 입니다. printf 형식은 원래 C
함수 printf
에서 왔지만 비슷한 형식 지정 함수는 perl, ruby, python, java, php 등에서 사용할 수 있습니다.
파일 이름을 연결하기 전에 값의 문자열 형식 을 사용할 수 있습니까 ?
"%03d" % number
String#next
카운터로 사용하십시오 .
>> n = "000"
>> 3.times { puts "file_#{n.next!}" }
file_001
file_002
file_003
next
상대적으로 '영리하다'는 의미는
>> n = "file_000"
>> 3.times { puts n.next! }
file_001
file_002
file_003
다른 답변에서 언급했듯이 "%03d" % number
꽤 잘 작동하지만 rubocop 루비 스타일 가이드에 위배됩니다 .
상당히 비밀스러운 String # % 메소드에 비해 sprintf 및 별명 형식을 사용하는 것이 좋습니다
다음을 사용하여 더 읽기 쉬운 방식으로 동일한 결과를 얻을 수 있습니다.
format('%03d', number)
참고 URL : https://stackoverflow.com/questions/1543171/how-can-i-output-leading-zeros-in-ruby
'IT story' 카테고리의 다른 글
npm 설치 오류-MSB3428 : Visual C ++ 구성 요소“VCBuild.exe”를로드 할 수 없습니다 (0) | 2020.04.19 |
---|---|
Javascript에서 하루를 시작하고 끝내는 방법? (0) | 2020.04.19 |
Try 블록에 값을 반환하면 Final 문의 코드가 실행됩니까? (0) | 2020.04.19 |
스위프트에서 지연을 만드는 방법? (0) | 2020.04.19 |
프래그먼트를 제거하는 방법, 즉 finish ()와 동등합니까? (0) | 2020.04.19 |