루비에서 선행 0을 출력하려면 어떻게 해야 합니까?
루비 스크립트에서 일련의 번호가 매겨진 파일을 출력하고 있습니다.숫자는 카운터를 늘려서 나온 것이지만, 디렉터리에서 잘 정렬되도록 하려면 파일 이름에 선행 0을 사용합니다.다른말입니다.
file_001...
대신에
file_1
숫자를 문자열로 변환할 때 선행 0을 추가하는 간단한 방법이 있습니까?("10년 미만이면..." 할 수 있습니다.100" 미만인 경우).
사용%
문자열이 있는 연산자:
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
그러나 비슷한 포맷 기능은 펄, 루비, 파이썬, 자바, php 등에서 사용할 수 있습니다.
카운터의 최대 자릿수가 알려진 경우(예: 카운터 1의 경우 n = 3).876), 할 수 있습니다.
str = "file_" + i.to_s.rjust(n, "0")
파일 이름을 동기화하기 전에 값의 문자열 형식을 사용할 수는 없습니까?
"%03d" % number
카운터로 사용합니다.
>> 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
꽤 잘 작동하지만, 루보캅 루비 스타일 가이드와는 반대입니다.
상당히 암호화된 String#% 메서드보다 sprintf와 해당 별칭 형식의 사용을 선호합니다.
다음을 사용하여 보다 읽기 쉬운 방법으로 동일한 결과를 얻을 수 있습니다.
format('%03d', number)
filenames = '000'.upto('100').map { |index| "file_#{index}" }
출력
[file_000, file_001, file_002, file_003, ..., file_098, file_099, file_100]
언급URL : https://stackoverflow.com/questions/1543171/how-can-i-output-leading-zeros-in-ruby
'source' 카테고리의 다른 글
dbvisualizer: 선택 쿼리에서 최대 행 설정 (0) | 2023.06.30 |
---|---|
Firebase 저장소에 파일이 있는지 확인하는 방법은 무엇입니까? (0) | 2023.06.30 |
파이썬 SciPy는 BLAS가 필요합니까? (0) | 2023.06.25 |
특정 값을 포함하지 않는 배열을 가진 문서 찾기 (0) | 2023.06.25 |
MongoDB(MongoDB+Node js 콤보)에 삽입하기 전에 사용자 입력을 검사해야 합니까? (0) | 2023.06.25 |