728x90
안녕하세요:)
오늘은 String(문자열)에 대해서 알아보는 시간을 가지도록 할게요!
1. String, Character
- String은 문자열을 나타내는 자료형입니다.
- String 타입 데이터의 값을 표현할 때는 큰따옴표(" ")를 사용합니다.
- 문자열을 변수로 저장하면 언제든지 변경이 가능합니다.
- 빈 문자를 저장하고 싶다면 큰따옴표 사이에 공백을 추가해야 합니다.
- 문자로 처리하고 싶다면 타입을 반드시 지정해 줘야 합니다.
let str = "안녕하세요" // Immutable String 바꿀 수 없는 문자열
var str2 = "반가워요" // Mutable String 바꿀 수 있는 문자열
let str3 = "A" // 이건 문자열일까요? 문자일까요? -> 문자열입니다!
let Ch: Character = "A" // 문자로 처리하고 싶을 때는 반드시 타입을 지정해 줘야 합니다!!
let emptyStr = "" // 빈 문자열! 공백을 추가하지 않아야 합니다.
let emptyStr2 = String() // 생성자를 사용한 빈 문자열
let emptyChar: Character = " " // 빈 문자를 저장하고 싶다면 반드시 공백을 추가해 줘야 합니다.
2. single-line , Multiline String Literal
- Multiline String은 큰따옴표 세 개를 사용합니다.
- Multiline String은 여는 따옴표와 닫는 따옴표 사이의 모든 줄이 포함됩니다.
"안녕하세요, 반가워요" // single-line
let multiline = """
안녕하세요
반가워요
행복하세요
!!!
"""
- Multiline String 내부에 줄 바꿈( \ )이 포함되어 있다면 줄 바꿈이 문자열 값에 나타납니다.
let multiline = """
안녕하세요
반가워요\
행복하세요
!!!
"""
3. Raw String
var str = "Hello, Swift"
print(str) // Hello, Swift
str = "\"Hello\", Swift" // "를 사용해서 Hello에 ""를 추가했습니다.
print(str) // "Hello", Swift
str = "Hello, \nSwift"
print(str) // \n 을 사용해서 줄 바꿈을 추가했습니다.
print("===========")
str = #"Hello\#nSwift"#
print(str) // 위의 코드와 같은 결과를 보여줍니다.
4. String Interpolation
< Format specifier >
String(format: "%.2f", 22.33434343434) // 22.33 소수점 2자리까지 출력합니다.
String(format: "Hi, %@", "Swift") // Hi Swift , /@이 Swift로 대체됩니다.
String(format: "%d", 100) // 정수를 대체합니다.
String(format: "[%d]", 200)
String(format: "[%10d]", 200)
String(format: "[%-10d]", 200)
let firstN = "DOIN"
let lastN = "KIM"
let name = "My name is %1$@%2$@."
String(format: name, firstN, lastN) // My name is DOINKIM.
let date = Date()
"오늘은 \(date) 입니다."
let temp = 15.2
"오늘은 \(temp)도 입니다."
Double.pi
"pi의 값은 \(Double.pi)입니다."
5. String Index
문자열에서 인덱스를 사용하는 이유는 유니코드의 독립적인 형태로 문자열을 처리하기 때문에 사용합니다.
let str = "Hello, Swift"
str[str.startIndex] // H , 첫 번째 인덱스 접근
//str[str.endIndex] // error, endIndex는 마지막 문자 다음의 인덱스를 나타냅니다. past the end
str[str.index(before: str.endIndex)] // t, 마지막 인덱스 접근 방법
str[str.index(after: str.startIndex)] // e 두 번째 인덱스 접근
str[str.index(str.startIndex, offsetBy: 2)] // l
str[str.index(str.endIndex, offsetBy: -2)] // f
6. String Basic
let a = String(300, radix: 16) // 숫자를 특정 진법으로 바꾸는 방법, 16진수로 변경했습니다.
let b = String(repeating: "안녕", count: 3) // 안녕안녕안녕, 특정 문자를 원하는 갯수만큼 채워서 출력하는 방법입니다.
var str = "Hello, Swift"
str += "\t어렵다!" // Hello, Swift 어렵다!
str.count // 문자열의 길이를 확인합니다.
str.isEmpty // 문자열이 비어있는지 확인합니다.
str.uppercased() // 문자열의 모든 문자를 대문자로 변경합니다.
str.lowercased() // 문자열의 모든 문자를 소문자로 변경합니다.
str.contains("H") // true, 문자열에 포함되어 있는 문자를 확인할때 사용합니다.
str = "hello, swift"
str.capitalized // 문자열의 각 문자의 첫 번째 문자를 대문자로 변경합니다.
let strA = "안녕하세요 블로그에 오신 걸 환영합니다."
strA.randomElement() // 문자열에서 랜덤으로 문자를 뽑아줍니다.
strA.shuffled() // 문자열에 포함된 문자를 랜덤으로 섞어서 문자 배열로 리턴해줍니다.
7. SubString
- 하나의 문자열에서 특정 범위에 있는 문자열을 서브 스트링이라고 합니다.
- 서브 스트링은 원본 문자열의 메모리를 공유합니다.
- 값을 읽을 때는 원본 메모리를 공유하고, 값을 변경할 때 새로운 메모리가 생성됩니다.
- 새로운 문자열을 생성하고 싶을 때는 String 생성자를 사용합니다.
var str = "iPhone Pro Max"
str.prefix(1) // i
str.prefix(2) // ip
str.insert("!", at: str.endIndex) // iPhone Pro Max!
str.insert(contentsOf: "!!!!", at: str.endIndex) // iPhone Pro Max!!!!!
// 문자열 특정 범위 추출
str[str.startIndex ..< str.index(str.startIndex, offsetBy: 4)] // iPho
str[str.index(str.startIndex, offsetBy: 4)...] // ne Pro Max!!!!! , 특정 인덱스부터 마지막까지 추출합니다.
let lower = str.index(str.startIndex, offsetBy: 0)
let upper = str.index(str.startIndex, offsetBy: 10)
str[lower...upper] // iPhone Pro
728x90
'Swift' 카테고리의 다른 글
String Compare, Search, Option (0) | 2020.11.19 |
---|---|
String Editing (0) | 2020.11.19 |
Tuple (0) | 2020.11.17 |
Closures (0) | 2020.11.16 |
Function (0) | 2020.11.12 |