์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Reduce
- RxSwift
- ์ง๋ฒ๋ณํ
- ์๊ณ ๋ฆฌ์ฆ
- SWiFT
- ์ฑ๋ง๋ค๊ธฐ
- map
- Decodable
- String.Index
- Mac
- Firestore
- ์ฑ๋์์ธ
- Codable
- Encodable
- components
- ios
- ExpressJS
- Filter
- nodejs
- DispatchQueue
- UIRefreshController
- MongoDB
- AVAudioPlayer
- Figma
- CRUD
- Core Data
- mongoose
- Cloud Firestore
- Firestore CRUD
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
Focus On Develop ๐ค๐ค
[Swift] String.Index ๋ณธ๋ฌธ
์์ธ ์ ๋ณด : String.Index | Apple Document
๋ค๋ฅธ ์ธ์ด๋ค(C, JAVA, Python ๋ฑ)์ String์ด ์ฃผ์ด์ก์๋, ๋ฐ๋ก Character์ ๋ฐฐ์ด์ฒ๋ผ ์ธ๋ฑ์ค๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฐ๋ฐ.. Swift์ String์ Index(์ซ์) ๋ก ํน์ ๋ฌธ์๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ํน์ ๋ฌธ์๋ก ๋ฐ๋ก ์ ๊ทผํ๊ธฐ ์ํด์๋ String.Index Type๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๋ช๊ฐ์ง ์์๋ฅผ ๋ณด๋ฉด์ ์์ธํ ์ดํด๋ณด์.
let string = "hello"
let firstCharacter = string[0] // ERROR
์ด๋ ๊ฒ String์ ์ซ์ Index๋ก ๋ฐ๋ก ์ ๊ทผ์ ๋ชปํ๋ค.
๋์ ์ String.Index Type์ผ๋ก startIndex(์์), endIndex(๋)์ ๊ฐ๋ฆฌํค๋ Index๋ฅผ ์ ๊ณตํด์ค๋ค. ๊ทผ๋ฐ ์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์ startIndex๋ ์ฐ๋ฆฌ๊ฐ ์์์ ์ผ๋ก ์๊ฐํ๋ ์ฒซ๋ฒ์งธ ๋ฌธ์, 0๋ฒ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ฅดํค๋๋ฐ, endIndex๋ ์ ๋ง String์ ๋ง์ง๋ง ๋ฌธ์ (ํํ ๋งํ๋ '\0')๋ฅผ ๊ฐ๋ฅดํจ๋ค.
๊ทธ๋์ ์น์ ํ๊ฒ๋ String.Index(after / before) ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
let firstIndex = string[string.startIndex] // 'h'
string[string.endIndex] // Out Of Range Crash
string[string.Index(after: firstIndex)] // 'e'
string[string.Index(before: string.endIndex)] // 'o'
์๋ฌด๋ฆฌ ๊ทธ๋๋ ์์ง์ ์ฐ๋ฆฌ์ ์ฑ์ ์ฐจ์ง ์๋๋ค. ์..? ๊ทธ๋ผ ์ค๊ฐ์ ์๋ ํน์ ๋ฌธ์๋ฅผ ์ฐพ์ผ๋ ค๋ฉด after, after, ํ๋ฉด์ ์ฐพ์์ผ๋์?? ใ ใ ์๋์!! ๋คํํ๋ offset์ ์ด์ฉํด์ ์ ๊ทผํ๋ ๊ฒ๋ ์ ๊ณตํ๋ค. ๋ฌผ๋ก ํน์ ๋ฌธ์๊ฐ ์ด๋ ์๋์ง Index๋ฅผ ์ฐพ๋๊ฒ๋ ๊ฐ๋ฅ!
let randomIndex = string.index(string.startIndex, offsetBy: 2)
string[randomIndex] // 'l'
string.index(of: "e") // 2
๊ทธ๋ฆฌ๊ณ .. ์์ฝ๊ฒ๋ Swfit์์ .substring์ ๋ฐ๋ก ์ฌ์ฉํ๋๋ก ์ ๊ณตํ์ง๋ ์๋๋ค ใ .ใ ๋์ String.Index๋ฅผ ํ์ฉํด์ ์๋(?)์ผ๋ก ๊ตฌํ์ ๊ฐ๋ฅํ๋ค! ๐ ๐ ์..?? hell?? ใ ใ ใ ใ Swift์์ String์ ์ธ๋ฐํ๊ฒ ๋ค๋ฃจ๋๊ฑด ํฌ์ด๋ผ๊ตฌ..?? ์ธ์ .. ๐๐
let startIndex = string.startIndex
let endIndex = string.index(string.endIndex, offsetBy: -2) // offset์ ์์๋ ๊ฐ๋ฅํ๋ต๋๋ค!
let substring = string[startIndex...endIndex] // "hell"
๋๋ด์ด๊ณ .. substring๋ String extension์ผ๋ก ํ๋ฒ๋ง ๊ตฌํํด๋์ผ๋ฉด, ์คํ๋ ค ๋ค๋ฅธ ์ธ์ด๋ค๋ณด๋ค ๋ ์ํ๋ ๊ธฐ๋ฅ์ ๋ง์ถ? ๊ตฌํ๋ ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค!
PS. ์๋์ฒ๋ผ String ํ์ ์ Array๋ก Castingํด๋ฒ๋ฆฌ๋ฉด, array[index]์ ๊ฐ์ด ์ธ๋ฑ์ค๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.. ๐
let array = Array(string)
'iOS [Swift] > ๊ธฐ์ด๋ฅผ ํํํ!' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Core Data(1) ๊ฐ๋ ์ ๋ฆฌ (0) | 2020.12.21 |
---|---|
[Swift] String.components (0) | 2020.12.18 |
[Swift] String Radix๋ฅผ ํตํ ์ง๋ฒ๋ณํ (0) | 2020.12.16 |
[Swift] enumerated() (0) | 2020.12.16 |
[Swift] Set (0) | 2020.12.15 |