오늘 팀 프로젝트 발표를 하면서 튜터님께서 피드백을 해주셨다. 게임 내 제한시간이 10초 이하로 떨어지면 0:9 와 같은 식으로 출력되었기 때문이다.
해당 문제를 확인하기 위해 "C# 숫자 앞에 0 붙이기"를 검색했다.
찾아보니 대충 3가지 방법이 있는 듯 하다.
- PadLeft 함수
- string.Format 함수
- ToString() 함수
전체 자리 수만큼 특정 문자를 채울 수 있는 함수라고 한다.
ex) Hello##### 을 출력하고 싶으면
string str = "Hello"; str.PadRight(5, '#'); // Hello#####
우리 게임의 경우
//str.PadLeft(전체 자리 수, 붙일 문자); timeTxt.text = min + ":" + ((int)sec).ToString().PadLeft(2, '0');
굉장히, 굉장히 많은 것을 할 수 있다!
- 형식이 지정된 출력 제어를 확인해보면 될 것 같다.
https://learn.microsoft.com/ko-kr/dotnet/api/system.string.format?view=net-8.0int value = 1326; // D : 10진법, X : 16진법 string result = String.Format("{0,10:D6} {0,10:X8}", value); Console.WriteLine(result); // The example displays the following output: // 001326 0000052E
우리 게임의 경우
timeTxt.text = string.Format("{0}:{1, 0:D2}", min, (int)sec);
ToString()에 표준 숫자 서식 문자를 사용하여 출력 자리 수를 제어할 수 있다!
우리 게임의 경우
timeTxt.text = min + ":" +((int)sec).ToString("D2");