Bibi's DevLog ๐ค๐
[Swift] String.Index (๊ทธ๋ฆฌ๊ณ Substring) - ๋ฌธ์์ด์ ํน์ ๋ฌธ์ ๊ตฌํ๊ธฐ ๋ณธ๋ฌธ
[Swift] String.Index (๊ทธ๋ฆฌ๊ณ Substring) - ๋ฌธ์์ด์ ํน์ ๋ฌธ์ ๊ตฌํ๊ธฐ
๋น๋น bibi 2022. 7. 28. 12:29[Swift] String.Index (๊ทธ๋ฆฌ๊ณ Substring) - ๋ฌธ์์ด์ ํน์ ๋ฌธ์ ๊ตฌํ๊ธฐ
์ ํ ๊ณต์ ๋ฌธ์
Swift Standard Library > String > String.Index
https://developer.apple.com/documentation/swift/string/index/
Swift Standard Library > Substring
https://developer.apple.com/documentation/swift/substring
์ค๋ช ๊ณผ ์์ ๋ฅผ ์ฐธ๊ณ ํ ํ๋ฅญํ ๊ธ
String.Index
๋ฌธ์์ด์์ ๋ฌธ์๋ ์ฝ๋ ์ ๋์ ์์น.
: ์ค์ํํธ์์ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํน์ํ ํ์ ์ด๋ค.
โ๏ธ ์ค์ํํธ์ String์์๋ ์ธ๋ฑ์ค๋ก ์ ์(Int
)๋ฅผ ๋ฐ์ง ์๋๋ค. ๊ทธ ๋์ String.Index๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
var hello = "hello"
๋ผ๊ณ ํ์.
๋ฌธ์์ด์ ๋งจ ์ฒซ ๊ธ์ ๊ตฌํ๊ธฐ
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
๋ฅผ ํ์ฉํด ๊ตฌํ๋ค.
์๋ฅผ ๋ค์ด ์ธ ๋ฒ์งธ ๊ธ์ ๊ตฌํ๊ธฐ์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด offsetBy๋ฅผ 2 ๋ก ์ค์ ํด ๊ตฌํ๋ค
(์ธ๋ฑ์ค ๊ฐ์ 0๋ถํฐ ์์ํ๋ค)
let thirdIndex = hello.index(hello.startIndex, offsetBy: 2)
๋ฌธ์์ด์ 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
๊ฐ์ผ๋ก ์์๋ฅผ ์ฌ์ฉํด ์ค๋ค.
- ์ธ๋ฑ์ค๋ก๋ถํฐ ์ผ์ชฝ์ผ๋ก ์์ง์ผ ๋๋
๋ฌธ์์ด์์ ํน์ ๋ฌธ์์ ์ธ๋ฑ์ค ๊ตฌํ๊ธฐ
func firstIndex(of: Character) -> String.Index?
๋๋
func lastIndex(of: Character) -> String.Index?
๋ฅผ ํ์ฉํ๋ค.
์๋ฅผ ๋ค์ด o๋ผ๋ ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ค.
let oIndex = hello.index(of: "o")
โ๏ธString.Index ์ ๊ตฌํ๊ธฐ ์ํด ์ฌ์ฉํ ์์ ๋ฉ์๋๋ค์ ์ฌ์ค Substring์์ ์ ๊ณตํ๋ ๋ฉ์๋๋ค์ด๋ค!
๋ฌธ์์ด ์๋ผ๋ด๊ธฐ
์ค์ํํธ์ substring = ๋ถ๋ถ๋ฌธ์์ด ์ ์๋ฏธํ๋ค.
๋ถ๋ถ๋ฌธ์์ด์ String.Index๋ฅผ ํ์ฉํด ๋ฒ์(range)๋ฅผ ๋จผ์ ๋ง๋ค๊ณ , ๊ทธ ๋ฒ์๋ฅผ ์ด์ฉํด ๊ตฌํ๋ค.
์๋ฅผ ๋ค์ด var hello = "hello"
์์ ๋งจ ์, ๋งจ ๋ค ๊ธ์๋ฅผ ์ ์ธํ ell๋ง ๊ตฌํด ๋ณด์.
let rangeStartIndex = hello.index(after: hello.startIndex)
let rangeEndIndex = hello.index(hello.index, offsetBy: -2)
let ellSubstring = hello[rangeStartIndex...rangeEndIndex] // Substring ํ์
์ "ell" ์์ฑ
// ์๋ ์ฝ๋๋ ์์ ์ฝ๋์ ๊ฐ์ ์ญํ ์ด๋ค.
let rangeStartIndex = hello.index(after: hello.startIndex)
let rangeEndIndex = hello.index(before: hello.endIndex)
let ellSubstring = hello[rangeStartIndex..<rangeEndIndex] // ..< ์ ์ฌ์ฉํจ์ ์ฃผ์
์ธ๋ฑ์ค์ ๋ฒ์๋ฅผ ์ด์ฉํด ์ป์ ๋ถ๋ถ๋ฌธ์์ด์ String์ด ์๋ Substring์ด๋ผ๋ ๋ณ๋์ ํ์ ์ด๋ฏ๋ก, String์ผ๋ก ์บ์คํ ํด ์ฃผ์ด์ผ ํ๋ค.
let ellString = String(ellSubstring)
'๐ฑ๐ iOS > ๐ Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ===(_:_:) ์ !==(_:_:) (0) | 2022.10.12 |
---|---|
๋์ผ์ฑ๊ณผ ๋๋ฑ์ฑ Identity and Equality (Swift) (0) | 2022.10.12 |
[Swift] removeFirst(), removeLast(), removeFirst(_:), removeLast(_:) (2) | 2022.10.06 |
[Swift] ์ธ์คํด์ค ๋น๊ต ๋ฐฉ๋ฒ - is, ๋ฉํ ํ์ (0) | 2022.08.02 |
[Swift] ํ๋กํ ์ฝ Protocol (0) | 2022.08.02 |