Danny의 iOS 컨닝페이퍼
article thumbnail

String Format

String(format: String, _ arguments: CVarArg...)

format에서는 %d , %f, %@ 이와 같은 기호를 넣어 변형이 가능하며,

arguments의 여러 인수들은 $1, $2... 과 같이 취급하여 사용도 가능하다.

 

 

정수형 변환 (%d)

Int형식을 변환할 때 사용합니다. (오직 정수만 사용가능)

let num1 = 123
let num2 = 456
// 변화를 확인하기 위해 []로 구분을 지어줌, 사용 시 [] 제거!
String(format: "[%d]", num1)                // [123]
// 숫자가 범위를 넘어가면 앞에 공백 (왼쪽 정렬)
String(format: "[%5d]", num1)               // [  123]
// 숫자가 범위를 넘어가면 뒤에 공백 (오른쪽 정렬)
String(format: "[%-5d]", num1)              // [123  ]
// 숫자가 범위를 넘어가면 앞에 0 추가
String(format: "[%.5d]", num1)              // [00123]
// 이와 같이도 여러개도 사용이 가능
String(format: "[%d, %d]", num1, num2)      // [123, 456]
// 만약 첫 번재 인수와 두 번째 인수와 위치를 바꿔주려면,
// 1$(첫 번째 인수), 2$(두 번째 인수)를 사용하여 위치를 변경이 가능.
String(format: "[%2$d, %1$d]", num1, num2)  // [456, 123]

 

시계가 있다고 생각해보자.

시간이 1~9시 일 때는 한 자릿수이고 나머지는 두 자릿수가 된다.

시간을 두 자릿수 규격으로 통일시켜 만들고 싶을 땐, 어떻게 해야 할까?

// 시간 = 7시 30분 5초
let hours = 7
let minutes = 30
let seconds = 5

// 그냥 출력하게 된다면 이와 같이 될 것이다.
String(format: "%d : %d : %d", hours, minutes, seconds)
// 7 : 30 : 5

// 00:00:00 시간 규격을 만들고 싶을 때
// %02d (문자의 길이는 2, 공백은 0으로 채운다.)
String(format: "%02d : %02d : %02d", hours, minutes, seconds)
// 07 : 30 : 05

 

 

 

문자열 변환 (%@)

String형식을 변환할 때 사용합니다. (오직 문자열에서만 사용가능)

let firstName = "Daniel"
let lastName = "Yang"
// 각 인수를 받아서 사용 가능 ($1, $2)
let korFormat = "내 이름은 %2$@ %1$@"
let engFormat = "My name is %@ %@"

String(format: korFormat, firstName, lastName)
String(format: engFormat, firstName, lastName)
// 내 이름은 Yang Daniel
// My name is Daniel Yang

 

 

실수형 변환 (%f)

Float 또는 Double형식을 변환할 때 사용합니다. (오직 Float, Double형만 사용가능)

주로 소수점을 변환할 때 사용.

let rNum1: Float = 12.123
let rNum2: Float = 45.456
// 변화를 확인하기 위해 []로 구분을 지어줌, 사용 시 [] 제거!
String(format:"[%f]", rNum1)                     // [12.123000]
// 소수점 첫 째 자리까지 출력
String(format:"[%.1f]", rNum1)                   // [12.1]
// 소수점 둘 째 짜리까지 출력
String(format:"[%.2f]", rNum1)                   // [12.12]
// 문자의 길이는 10개, 소수점 둘 째 짜리 출력 (오른쪽 정렬)
String(format:"[%10.2f]", rNum1)                 // [     12.12]
// 문자의 길이는 10개, 소수점 둘 째 짜리 출력 (왼쪽 정렬)
String(format:"[%-10.2f]", rNum1)                // [12.12     ]
// 문자의 길이는 10개, 공백을 0으로 채움, 소수점 둘 째 자리까지 출력
String(format:"[%010.2f]", rNum1)                // [0000012.12]
// 이와같이 여러 인수 사용가능
String(format:"[%.1f, %.1f]", rNum1, rNum2)      // [12.1, 45.5]
// 만약 첫 번재 인수와 두 번째 인수와 위치를 바꿔주려면
// 1$(첫 번째 인수), 2$(두 번째 인수)를 사용하여 위치를 변경이 가능.
String(format:"[%2$.1f, %1$.1f]", rNum1, rNum2)  // [45.5, 12.1]

 

 

참고

 

How to create a String with format?

I need to create a String with format which can convert Int, Int64, Double, etc types into String. Using Objective-C, I can do it by: NSString *str = [NSString stringWithFormat:@"%d , %f, %ld,...

stackoverflow.com

 

[Swift] String 고수가 될거야

✔️ Apple 공식문서 참고 Apple Developer Documentation developer.apple.com Strings and Characters — The Swift Programming Language (Swift 5.5) Strings and Characters A string is a series of characters, such as "hello, world" or "albatross". Swift

leeari95.tistory.com

 

[Java] String.format 을 이용한 문자열 형식 설정하기

public static String format(String format, Object... args); public static String format(Locale l, String format, Object... args); String 의 static 메서드인 format 메서드는 문자열의 형식을 설정하는 메서드입니다. %d (10진수 형식

blog.jiniworld.me

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!