Golang : 인쇄 할 때 숫자를 0으로 채우는 방법은 무엇입니까?
숫자를 인쇄하거나 0 패딩으로 문자열을 만들어 고정 너비로 만들 수 있습니까?
예를 들어, 내가 번호가 12
있고 그것을 만들고 싶다면 000012
.
fmt 패키지는 다음을 수행 할 수 있습니다.
fmt.Printf("|%06d|%6d|\n", 12, 345)
% 06d의 0은 너비가 6이되고 0으로 채워집니다. 두 번째는 공백으로 채워집니다.
http://play.golang.org/p/cinDspMccp 에서 실제로 작동하는 모습을 볼 수 있습니다.
이를 달성하는 가장 간단한 방법이 있습니다. 사용하다
func padNumberWithZero(value uint32) string {
return fmt.Sprintf("%02d", value)
}
fmt.Sprintf
어디에도 인쇄하지 않고 문자열을 형식화하고 반환합니다. 여기 %02d
에 숫자가 2 미만인 값에 대해 왼쪽에 패드 0이 표시됩니다. 주어진 값에 2 개 이상의 숫자가 있으면 패딩되지 않습니다. 예를 들면 :
- 입력이 1이면 출력은 01이됩니다.
- 입력이 12이면 출력은 12입니다.
- 입력이 1992이면 출력은 1992입니다.
%03d
더 많은 0 패딩에 이상을 사용할 수 있습니다 .
of 및 패딩 문자와 함께 fmt 패키지 의 Printf
함수를 사용하십시오 .width
6
0
import "fmt"
fmt.Printf("%06d", 12) // Prints to stdout '000012'
width
다음과 같이 작품 설정 :
fmt.Printf("%d", 12) // Uses default width, prints '12'
fmt.Printf("%6d", 12) // Uses a width of 6 and left pads with spaces, prints ' 12'
Golang (및 대부분의 다른 언어)에서 지원하는 유일한 패딩 문자는 공백 및 0
:
fmt.Printf("%6d", 12) // Default padding is spaces, prints ' 12'
fmt.Printf("%06d", 12) // Change to 0 padding, prints '000012'
마이너스를 앞에 추가하여 인쇄를 오른쪽 정렬 할 수 있습니다 -
.
fmt.Printf("%-6d", 12) // Padding right-justified, prints '12 '
부동 소수점 숫자의 경우 너비에는 전체 형식 문자열이 포함됩니다.
fmt.Printf("%6.1f", 12.0) // Prints '0012.0' (width is 6, precision is 1 digit)
*
숫자 대신 사용 하고 너비를 int
매개 변수 로 전달 하여 프로그래밍 방식으로 너비를 설정할 수도 있습니다 .
myWidth := 6
fmt.Printf("%0*d", myWidth, 12) // Prints '000012' as before
이는 인쇄하려는 가장 큰 값이 런타임에만 알려진 경우에 유용 할 수 있습니다 ( maxVal
다음 예제에서 호출 됨 ).
myWidth := 1 + int(math.Log10(float64(maxVal)))
fmt.Printf("%*d", myWidth, nextVal)
마지막으로, 인쇄하고 싶지 stdout
않지만 문자열을 반환 하려면 동일한 매개 변수를 사용 Sprintf
하여 fmt 패키지 에서도 사용 하십시오.
s := fmt.Sprintf("%06d", 12) // returns '000012' as a String
" Go lang의 인쇄 형식 목록 "이라는 질문 은 플래그도 있음을 상기시킵니다.
-
왼쪽이 아닌 오른쪽에 공백이있는 채우기 (필드를 왼쪽 정렬)
DaddyOh/golang-samples/pad.go
다른 문자열 시퀀스 ( ' 0
'또는 ' ' 보다 더 복잡함)로 채우려면로 더 많은 채우기 예제를 볼 수 있습니다 .
leftPad(s string, padStr string, pLen int)
rightPad(s string, padStr string, pLen int)
leftPad2Len(s string, padStr string, overallLen int)
rightPad2Len(s string, padStr string, overallLen int)
참조 play.golang.org:
1234567890
leftPad(str, "*", 3) ***1234567890
leftPad2Len(str, "*-", 13) -*-1234567890
leftPad2Len(str, "*-", 14) *-*-1234567890
leftPad2Len(str, "*", 14) ****1234567890
leftPad2Len(str, "*-x", 14) x*-x1234567890
leftPad2Len(str, "ABCDE", 14) BCDE1234567890
leftPad2Len(str, "ABCDE", 4) 7890
rightPad(str, "*", 3) 1234567890***
rightPad(str, "*!", 3) 1234567890*!*!*!
rightPad2Len(str, "*-", 13) 1234567890*-*
rightPad2Len(str, "*-", 14) 1234567890*-*-
rightPad2Len(str, "*", 14) 1234567890****
rightPad2Len(str, "*-x", 14) 1234567890*-x*
rightPad2Len(str, "ABCDE", 14) 1234567890ABCD
rightPad2Len(str, "ABCDE", 4) 1234
func lpad(s string,pad string, plength int)string{
for i:=len(s);i<plength;i++{
s=pad+s
}
return s
}
lpad ( "3", "0", 2) 결과 : "03"
lpad ( "12", "0", 6) 결과 : "000012"
참고URL : https://stackoverflow.com/questions/25637440/golang-how-to-pad-a-number-with-zeros-when-printing
'Nice programing' 카테고리의 다른 글
Eclipse의 초보자, "동적 웹 프로젝트"가 없습니다. Linux Ubuntu에 있습니다. (0) | 2020.10.25 |
---|---|
Html.EditorFor 기본값 설정 (0) | 2020.10.25 |
UILabel 높이를 동적으로 계산하는 방법은 무엇입니까? (0) | 2020.10.25 |
순수 CSS 닫기 버튼 (0) | 2020.10.25 |
MVC5, Web API 2 및 Ninject (0) | 2020.10.25 |