2022. 10. 4. 13:32ใios
Swift - ๋ฌธ์์ด
๋ฌธ์์ด์ด๋?
์ค์ํํธ์์ ๋ฌธ์์ด์ ์๋ฐ์ดํ ์์ ๋ฌธ์๋ค์ ์ฐ๊ฒฐํ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฌธ์๋ค์ด ์ ์ฅ๋ ๋๋ ์ ๋์ฝ๋ ๋ฌธ์๋ค๋ก ๊ตฌ์ฑ๋๋๋ฐ ์ด๋ค์ UTF-32๋ก ์ ์ฅ์ด ๋๋ค.
๋ง์ฝ 32๋นํธ๊ฐ ์๋ 16๋นํธ๋ 8๋นํธ๋ก ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด String์ ๋ด์ฅ๋ฉ์๋์ธ utf8์ด๋ utf16์ ์ฌ์ฉํ๋ฉด ๋๋ค.
let str = "Hi๐"
for _8bit in str.utf8 {
print("\(_8bit)", terminator: " ") // output: 72 105 240 159 145 143
}
๋ฌธ์์ด์ ์๋ธ์คํฌ๋ฆฝํ
๋ฌธ์์ด์ ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ์๋ธ์คํฌ๋ฆฝํ ์ ์ง์ํ์ง ์๋๋ค.
"abc haha"๋ผ๋ ๋ฌธ์์ด์ด ์๊ณ ๋ฌธ์๋ฅผ ํ์ํ ๋ ๊ฐ๊ฐ์ UTF-8 ๊ธฐ์ค์ผ๋ก ์ฝ์ด์ผํ ์ง UTF-16 ๊ธฐ์ค์ผ๋ก ์ฝ์ด์ผํ ์ง ๋ช ํํ ๊ธฐ์ค์ด ์๊ธฐ ๋๋ฌธ์ ์ค์ํํธ์์๋ String.Index๋ผ๋ ํน์ํ ํ์ ์ ์ ๊ณตํ๋ค.
String.Index๋ ๋ฌธ์์ด์ ์ธ๋ฑ์ค ๋ฒํธ์ธ๋ฐ ์ฌ๋ฐ๋ ์ ์ ์ด ์ธ๋ฑ์ค ๋ฒํธ๊ฐ ์ ์ํ์ ์ด ์๋ ๊ฒ์ด๋ค.
์ฆ ๋ฌธ์์ด ๋ด์์ ์๋ธ์คํฌ๋ฆฝํธ์ฒ๋ผ ์ฌ์ฉํด์ ๊ฐ์ ์ ๊ทผํ ์ ์์ง๋ง ์ด๋ ์ค์ ์๋ธ์คํฌ๋ฆฝํธ๋ ์๋๊ธฐ ๋๋ฌธ์ String.Index๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ ๊ทผํด์ผ ํ๋ ๊ฒ์ด๋ค.
let str = "abc"
print(str[String.Index(encodedOffset: 0)]) // output: a
String.Index๋ฅผ ์ฌ์ฉํ๊ณ encodedOffset์ ์ธ์๋ก ์ค์ ์ธ๋ฑ์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์๊ฒ ๋ค.
๊ทธ๋ผ ๋ฌธ์์ด์ ์ธ๋ฑ์ค์ ์ ๊ทผํ๊ณ ์ถ์๋๋ ํญ์ String.Index(encodedOffset: )์ ์ฌ์ฉํด์ผ ํ ๊น?
String.Index ์์ฑ
๋คํ์ด๊ฒ๋ String.Indexํ์ ์ ์์ฝ๊ฒ ์์ฑํ๋ ๋ฌธ์์ด ๋ฉ์๋๋ค์ด ์๋ค.
String.startIndex
String.endIndex
String.startIndex๋ ๋ฌธ์์ด์์ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
String.endIndex๋ ๋งจ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๋ค์ ๋ฌธ์(๊ณต๋ฐฑ)๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์ ๊ทผํ๋ ค๋ฉด String.index(before: )๋ฅผ ์ฌ์ฉํด์ ์ ๊ทผํด์ผํ๋ค.
let str = "abc"
print(str[str.startIndex]) // output: "a"
let endIndex = str.index(before: str.endIndex)
print(str[endIndex]) // output: "c"
ํน์ n๋ฒ์งธ ๋ฌธ์์ด์ ์ ๊ทผ
n๋ฒ์งธ ๋ฌธ์์ด์ ์ ๊ทผํด์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฉ์๋๋ก String.index(: offsetBy:)๊ฐ ์๋ค.
์๋ฅผ ๋ค์ด 3๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด str.index(str.startIndex, offsetBy: 2)๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํน์ ๋ฌธ์์ ์์น๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด
str.index(of: "c")๋ฅผ ์ฌ์ฉํ๋ค.
๋ฌธ์์ด์ ํน์ ๋ฒ์๋ฅผ ๊ฐ์ ธ์ค๊ธฐ
startIndex, endIndex, offsetBy๋ฅผ ์ด์ฉํด์ ๋ฒ์๋ฅผ ์ค์ ํด์ฃผ๊ณ
๋ฒ์ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
let str = "Happy"
let start = str.index(after: str.startIndex)
let end = str.index(str.endIndex, offsetBy: -2)
print(str[start...end]) // "app"
'ios' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
iOS - ๊ฐ์ ์ธ๋ํ์ ๋ํ ๊ณ ์ฐฐ(with map) (1) | 2022.12.03 |
---|---|
iOS - xib๋ฅผ ์ด์ฉํด์ Custom View ๋ง๋ค๊ธฐ (0) | 2022.10.10 |
Swift - components, split (1) | 2022.09.30 |
Swift - zip (0) | 2022.09.30 |
Swift - ์์ด๊ณผ ์กฐํฉ ๊ตฌํํ๊ธฐ (0) | 2022.09.29 |