본문 바로가기

코딩코오딩

[Swift] String - #7 Initializer(2) : Converting Numeric Values



 


 

Creating a String Using Formats

 

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

init(format: String, arguments: [CVarArg])

 

- 포맷 문자열을 통해서 String을 초기화 할 수 있다.(자세한 포맷은 String Format Specifiers 을 참조)

 

let str1 = String(format: "%@ %d개.", "사과", 5)
// "사과 5개."
let str2 = String(format: "%@ %d개.", arguments: ["사과", 6])
// "사과 6개."

 

 

 

init(format: String, locale: Locale?, _ args: CVarArg...)

init(format: String, locale: Locale?, arguments: [CVarArg])

 

- 스페인어에서의 숫자의 서식은 다르게 사용된다. 예를 들어 10000.00을 스페인어에서는 10.000,00으로 표기하고 우리는 10,000.00으로 표시한다. 특정 locale을 인자로 하여 String을 초기화 할 수 있다.

 

let str1 = String(format: "%@ 한 개당 가격은 %.2f %@.", locale: Locale(identifier: "es_ES"), "사과", 10000.0, "원")
// "사과 한 개당 가격은 10.000,00 원."

let str2 = String(format: "%@ 한 개당 가격은 %.2f %@.", locale: Locale(identifier: "ko_KR"), "사과", 10000.0, "원")
// "사과 한 개당 가격은 10,000.00 원."

 

 

static func localizedStringWithFormat(_ format: String, _ arguments: CVarArg...) -> String

 

지정된 형식 문자열을 템플릿으로 사용하여 생성한 문자열을 반환합니다. (지정된 형식 문자열의 인자는 사용자의 기본 locale에 따라서 대치 됩니다.)


Converting Numeric Values

init<T>(_ value: T, radix: Int = 10, uppercase: Bool = false) where T : BinaryInteger

 

- radix 인자로 넘겨 받은 진법으로 value의 값을 String으로 변환합니다.

- radix는 2 ~ 36까지 지원합니다.

- v 변수의 999_999에서 사용된 underscore(_) 는 가독성을 위해 swift에서 지원하는 기능입니다. 

- 9이상의 숫자는 로마자로 표시되고 'a' 부터 사용됩니다.

- uppercase 인자를 true로 전달하면 로마자를 대문자로 하여 문자열을 초기화합니다.

 

let v = 999_999
print(String(v, radix: 2))
// Prints "11110100001000111111"

print(String(v, radix: 16))
// Prints "f423f"

print(String(v, radix: 16, uppercase: true))
// Prints "F423F"

print(String(v, radix: 10))
// Prints "999999"

 

 


참고문서

https://developer.apple.com/documentation/swift/string

https://books.apple.com/us/book/the-swift-programming-language-swift-5-1/id881256329