Swift Format Specifier , Escape Swequence 문자열 규칙

Format Specifier

Format Specifier

String(format: "%.5fKB", size)  > 소숫점 5자리 수까지 표현 한 후 "KB"를 붙여 출력 한다
String(format: "Hello, %@", "Swift") 
String(format: "%d", 12) > 12를 출력한다.
String(format: "%.3f", 12.34) > 소수점 3자리 수까지 , 즉 12.340 을 출력한다.

String(format: "[%d]", 123) > 출력값 [123]
String(format: "[%10d]", 123) > 출력값 앞쪽에 빈공간을 만든다.  출력값 [    123]
String(format: "[%-10d]", 123) > 출력값 뒷쪽에 빈공간을 만든다. 출력값 [123    ]
String(format: "[%-10d]%%", 123) > 출력값 뒷쪽에 빈공간을 만든 후 % 를 붙여 출력한다. 출력값 [123   ]%

다양한 출력 할 수 있는 규칙들을 다시 한번 숙지하자

Escape Sequence

str = "\\"
// \ 하나만 출력됨

print("A\tB")
// t 는 탭이므로 문자열에 탭이 추가됨
print("A\nB")
// n 은 줄바꿈으로 문자열이 줄바꿈됨
print("\"Hello\" he said.")

"""
\"Hello\" he said.
"""

// Extended String Delimeters
#"\"Hello\" he said."#
// #은 \와 " 를 문자그대로 출력함
// #의 갯수를 맞춰 사용해야한다.

let value = 123
print(#"The value is \#(value)"#)

let multiline = #"""
"Multiline"
String
Literal
"""#

String Indices

문자열에서 문자나 코드의 위치
: 스위프트에서 문자열의 인덱스를 표현하기 위해서 사용하는 특수한 타입이다.

문자열의 맨 첫 글자 구하기

prefix(n) : 앞에서부터 n글자 가져오기
let he = hello.prefix(2)

startIndex 활용하기
let first = hello[hello.startIndex]

String.Index(encodedOffset: 0) : 0번째 인덱스를 나타내는 인덱스 생성

문자열의 두 번째 글자 구하기

두 번째 글자를 나타내는 인덱스를 먼저 생성한 뒤, 그 인덱스를 활용해 두 번쨰 글자를 찾는다.

let secondIndex = hello.index(after: hello.startIndex)
let second = hello[secondIndex]

문자열의 n번째 글자 구하기

func String.index(Substring.Index, offsetBy: Int) -> Substring.Index 를 활용

문자열의 n번째 이후 모든 글자 구하기

let s = "12:00:00AM"
let timeIndex = s.index(s.startIndex, offsetBy: 7)
let timeStr = String(s[...timeIndex]) // 12:00:00
let ampmIndex = s.index(s.endIndex, offsetBy: -2)
let ampmStr = String(s[ampmIndex...]) // AM

// 또는 아래와 같이 구할 수도 있다
let timeStr2 = s.prefix(8) // 12:00:00
let ampmStr2 = s.suffix(2) // AM

문자열의 맨 마지막 글자 구하기

subfix(n) : 뒤에서부터 n글자 가져오기
let lo = hello.suffix(2)
endIndex 와 index(before:) 활용하기
endIndex는 문자열의 마지막 글자가 아닌 맨 끝을 가리킨다.
❌ hello[hello.endIndex] -> 에러.
⭕️ let endIndex = hello.index(before: hello.endIndex)을 구한 뒤, let last = hello[endIndex] 로 구한다.
let endIndex = hello.index(hello.endIndex, offsetBy: -1)
인덱스로부터 왼쪽으로 움직일 때는 offsetBy 값으로 음수를 사용해 준다.
let str = "Swift"
str.startIndex

let firstCh = str[str.startIndex]
print(firstCh)

let lastCharIndex = str.index(before: str.endIndex)   //endIndex 는 마지막 문자의 다음 문자
let lastCh = str[lastCharIndex]
print(lastCh) 

String Basics

Swift 내 문자열을 출력할 수 있는 기본 규칙이다.

var str = "Hello, Swift String"
var emptyStr = ""
emptyStr = String()

let a = String(true)
let b = String(12)
let c = String(12.34)
let d = String(str)

let hex = String(123, radix: 16)

let repeatStr = String(repeating: "👍", count: 7)

let clap = "\u{1f44f}"

let e = "\(a) \(b)"
let f = a + b

str += "!!"

str.count
str.count == 0
str.isEmpty

str == "Apple"
"apple" != "Apple"

"apple" < "Apple"
// 아스키 코드

str.lowercased()
str.uppercased()
str.capitalized

for char in "Hello" {
    print(char)
}

let num = "1234567890"
num.randomElement()

num.shuffled()

'◽️ Programming > Swift 문법' 카테고리의 다른 글

Swift Closure  (0) 2024.03.01
Swift Findig Substrings, 배열(Array)  (0) 2024.03.01
Swift (for 문 , enum , optional, unwrap)  (0) 2024.03.01
Swift Optinals Type  (0) 2024.03.01
Swift 함수 기초  (0) 2024.03.01