์ฐธ๊ณ ์๋ฃ
Swift ๊ณต์ ๋ฌธ์๋ฅผ ํ๊ตญ์ด๋ก ๋ฒ์ญํ ์ฌ์ดํธ์ ๋๋ค.
๐ป ์ฐธ๊ณ ์๋ฃ์ ๋ชจ๋ ๋ด์ฉ์ ๋ค๋ฃจ๋ ๊ฒ์ด ์๋๋ผ ์๋กญ๊ฒ ์๊ฒ ๋ ์ ํน์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค๊ณผ ๋น๊ตํ์ ๋ ๋ค๋ฅธ ์ ๋ค์ ์์ฃผ๋ก ์ ๋ฆฌํ์ต๋๋ค. ๋ํ, ์ฐธ๊ณ ์๋ฃ ์ด์ธ์๋ ์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถํ ๋ถ๋ถ๋ ์ ๋ฆฌํ์ต๋๋ค.
multiLineString
์ฌ๋ฌ ์ค์ ๋ฌธ์์ด์ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ ํฐ ๋ฐ์ดํ 3๊ฐ(“””)๋ก ๋ฌถ์ด์ ์ฌ์ฉํ ์ ์๋ค.
let quotation = """
The White Rabbit put on his spectacles. "Where shall I begin,
please your Majesty?" he asked.
"Begin at the beginning," the King said gravely, "and go on
till you come to the end; then stop."
"""
์ฌ๋ฌ ์ค ๋ฌธ์์ด์ ์ฌ์ฉํ๋ฉฐ ์ค ๋ฐ๊ฟ์ ํ๊ณ ์ถ์ผ๋ฉด ๋ฐฑ์ฌ๋์ฌ(\)๋ฅผ ์ฌ์ฉํ๋ค.
let softWrappedQuotation = """
The White Rabbit put on his spectacles. "Where shall I begin, \
please your Majesty?" he asked.
"Begin at the beginning," the King said gravely, "and go on \
till you come to the end; then stop."
"""
print(softWrappedQuotation)
/* The White Rabbit put on his spectacles. "Where shall I begin, please your Majesty?" he asked.
"Begin at the beginning," the King said gravely, "and go on till you come to the end; then stop."
*/
๋น ๋ฌธ์์ด ์ด๊ธฐํ
var emtpryString = ""
var anotherEmptyString = String()
๋ฌธ์์ด ์์
ํฉ์ฑ ํ ๋น ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์์ ํ ์ ์๋ค.
var variableString = "Horse"
variableString += " and carriage"
// variableString = Horse and carriage
๋ฌธ์
๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์ ์์๋ฅผ ์ ์ธํ ์ ์๋ค.
let exclamationMark: Character = "!"
๋ฌธ์ ๋ฐฐ์ด์ ์ด์ฉํด ๋ฌธ์์ด์ ์ด๊ธฐํ ๋ฉ์๋์ ์ธ์๋ก ๋ฃ์ด ๋ฌธ์์ด์ ์์ฑํ ์ ์๋ค.
let catCharacters: [Character] = ["C", "a", "t", "!", "๐ฑ"]
let catString = String(catCharacters)
print(catString)
// Prints "Cat!๐ฑ"
๋ฌธ์์ด์ ๊ฐ๋ณ ๋ฌธ์๋ฅผ for-in loop์ ์ฌ์ฉํด ์ ๊ทผํ ์ ์๋ค.
for character in "Dog!๐ถ" {
print(character)
}
// D
// o
// g
// !
// ๐ถ
๋ฌธ์์ด ์ฝ์
๋ฐฑ์ฌ๋์ฌ ๊ดํธ๋ฅผ ์ด์ฉํด ์์, ๋ณ์, ๋ฆฌํฐ๋ด ๊ฐ์ ๋ฌธ์์ด์ ์ถ๊ฐํ ์ ์๋ค.
let mutiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
// message : "3 times 2.5 is 7.5"
์ ๋์ฝ๋
"\u{์ ๋์ฝ๋}"์ ํํ๋ก ์ ๋์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ ๋์ฝ๋๋ฅผ ๊ฒฐํฉํด์ ์ฌ์ฉํ ์ ์๋ค.
let precomposed: Character = "\u{D55C}" // ํ
let decomposed: Character = "\u{1112}\u{u1161}\u{11AB}" // ใ
, ใ
,ใด
// precomposed : ํ, decomposed ํ
let regionalIndicatorForUS: Character = "\u{1F1FA}\u{1F1F8}" //์ง์ญ์ฌ๋ณผ U์ S์ ๊ฒฐํฉ
// regionalIndicatorForUS : ๐บ๐ธ
๋ฌธ์์ด์ ์ ๊ทผ๊ณผ ์์
๋ฌธ์์ด์ ์์ ๊ณผ ์ ๊ทผ์ ๋ฌธ์์ด ๋ฉ์๋ ํน์ ํ๋กํผํฐ๋ฅผ ์ด์ฉํ๊ฑฐ๋ ์๋ธ์คํฌ๋ฆฝํธ(subscript) ๋ฌธ๋ฒ์ ์ด์ฉํด ํ ์ ์๋ค.
๋ฌธ์์ด ์ธ๋ฑ์ค
Swift์์๋ ๋จ์ํ Intํ ์ธ๋ฑ์ค๋ก ๋ฌธ์์ด์ ์ ๊ทผํ ์ ์๋ค. ์๋์ ๊ฐ์ด startIndex, endIndex, index(before:), index(after:), index(_:offsetBy:) ๋ฉ์๋ ๋ฑ์ ์ด์ฉํด ๋ฌธ์์ด์์ ํน์ ๋ฌธ์์ ์ ๊ทผํ ์ ์๋ค.
let greeting = "Guten Tag!"
greeting[2] // ์ค๋ฅ
greeting[greeting.startIndex]
// G
greeting[greeting.index(before: greeting.endIndex)] // endIndex๋ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์๋ฏธํ๋๊ฒ ์๋๋ผ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ ์๋ฏธํ๋ค.
// !
greeting[greeting.index(after: greeting.startIndex)]
// u
let index = greeting.index(greeting.startIndex, offsetBy: 7) // ์ธ๋ฑ์ค 7๊ณผ ๊ฐ์ ์๋ฏธ์ด๋ค.
greeting[index]
// a
let index = greeting.index(greeting.endIndex, offsetBy: -2) // ๋์์ 2๋ฒ์งธ ์ธ๋ฑ์ค
greeting[index]
//g
for index in greeting.indices {
print("\(greeting[index]) ", terminator: "")
// G u t e n T a g !
* indices๋ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์ ์๋ ๋ชจ๋ ํ์ ์ ์ ์ฉ๊ฐ๋ฅํ๋ค. ํนํ Set ํ์ ๊ฐ์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค ์ ๊ทผ์ ํ ์ ์๋๋ฐ indices์ ์ฌ์ฉํ๋ฉด ์ธ๋ฑ์ค ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
๋ฌธ์์ ์ฝ์ ๊ณผ ์ญ์
๋ฌธ์์ ์ฝ์ ๊ณผ ์ญ์ ์๋ insert(:at:), insert(contentsOf:at:), remove(at:), removeSubrange(:) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
var welcome = "hello"
welcome.insert("!", at: welcome.endIndex)
// welcome : hello!
welcome.insert(contentsOf: " there", at: welcome.index(before: welcome.endIndex))
// welcome : hello there!
welcome.remove(at: welcome.index(before: welcome.endIndex))
// welcome : hello there
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range)
// welcome : hello
๋ฌธ์์ด ์ชผ๊ฐ๊ธฐ
components(seperatedBy:) ์ผ๋ก ์๋ณธ ๋ฌธ์์ด์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ชผ๊ฐค ์ ์๋ค.
import Foundation
var str = "Hello Zedd!"
var arr = str.components(separatedBy: " ")
print(arr)
// ["Hello", "Zedd!"]
var str = "1+2-3*4/5"
var arr = str.components(separatedBy: ["+","-","*","/"])
print(arr)
//["1", "2", "3", "4", "5"]
๋ถ๋ถ ๋ฌธ์์ด
๋ฌธ์์ด์์ ๋ถ๋ถ๋ฌธ์๋ฅผ ์ป๊ธฐ ์ํด prefix (_:)์ ๊ฐ์ ์๋ธ์คํฌ๋ฆฝํธ ๋ฉ์๋๋ฅผ ์ด์ฉํ ์ ์๋๋ฐ, ๊ทธ๋ ๊ฒ ์ป์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฌธ์์ด(String) ์ธ์คํด์ค๊ฐ ์๋๋ผ ๋ถ๋ถ๋ฌธ์์ด(Substring) ์ธ์คํด์ค์ด๋ค. ๋ง์ฝ ๋ถ๋ถ ๋ฌธ์์ด์ ๋จ๊ธฐ๊ฐ์ ์ฌ์ฉํ๋๊ฒ ์๋๋ผ ์ค๋๊ธฐ๊ฐ ์ฌ์ฉํ๋ค๋ฉด ๋ฌธ์์ด ์ธ์คํด์ค๋ก ๋ฐ๊ฟ์ ์ฌ์ฉํ๋๊ฒ ์ข๋ค.
let name = "jinyoo"
print(name.prefix(2))
// ji
print(type(of: name))
// String
print(type(of: name.prefix(2)))
// SubString
// SubString์ String์ผ๋ก ๋ณํ
let newName = String(name.prefix(2))
์์ ๊ฐ์ด ์ฌ์ฉํด์ผํ๋ ๊ฒ์ด ์ข์ ์ด์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋๋ฌธ์ด๋ค. Substring์ ํด๋น ๋ฌธ์๋ฅผ ์ง์ ๊ฐ๊ณ ์๋ ๊ฒ์ด ์๋๋ผ ์๋ณธ String์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํด ์ฌ์ฉํ๋ค. ๊ทธ๋์ Substring์ ๊ณ์ ์ด์ฉํ๋ ์ด์์ ์๋ณธ String์ด ๊ณ์ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ์๊ฒ ๋๋ค. ์ฌ์ฉํ์ง ์๋ ๋ฌธ์์ด๊น์ง๋ ๋จ๊ฒ ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ฒ ๋๋ฌธ์ Substring์ ์ค๋ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์ ์์ ์ฒ๋ผ String์์ ์ธ์คํด์ค๋ก ๋ง๋ค์ด ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ฌธ์๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ด๋ฆฌ ํจ์จ๋ฉด์์ ์ข๋ค๊ณ ํ ์ ์๋ค.
์ ๋์ฌ์ ์ ๋ฏธ์ฌ ๋น๊ต
์ ๋์ฌ์ ์ ๋ฏธ์ฌ์ ๋น๊ต๋ฅผ ์ํด hasPrefix(:), hasSuffix(:) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
let romeoAndJuliet = [
"Act 1 Scene 1: Verona, A public place",
"Act 1 Scene 2: Capulet's mansion",
"Act 1 Scene 3: A room in Capulet's mansion",
"Act 1 Scene 4: A street outside Capulet's mansion",
"Act 1 Scene 5: The Great Hall in Capulet's mansion",
"Act 2 Scene 1: Outside Capulet's mansion",
"Act 2 Scene 2: Capulet's orchard",
"Act 2 Scene 3: Outside Friar Lawrence's cell",
"Act 2 Scene 4: A street in Verona",
"Act 2 Scene 5: Capulet's mansion",
"Act 2 Scene 6: Friar Lawrence's cell"
]
// ๋ฌธ์์ด ๋ฐฐ์ด์์ ์ ๋์ด Act 1๊ฐ ๋ช๊ฐ ๋ค์ด์๋์ง ํ์ธ
var act1SceneCount = 0
for scene in remeoAndJuliet {
if scene.hasPrefix("Act 1 ") {
act1SceneCount += 1
}
}
print("There are \(act1SceneCount) scenes in Act 1")
// There are 5 scenes in Act 1
// ๋ฌธ์์ด ๋ฐฐ์ด์์ ์ ๋ฏธ์ด Capulet's mansion ๊ณผ Friar Lawrences' cell ์ด ๊ฐ๊ฐ ๋ช๊ฐ ๋ค์ด์๋์ง ํ์ธ
var mansionCount = 0
var cellCount = 0
for scene in remeoAndJuliet {
if scene.hasSuffix("Capulet's mansion") {
mansionCount += 1
} else if scene.hasSuffix("Friar Lawrence's cell") {
cellCount += 1
}
}
print("\(mansionCount) mansion scenes; \(cellCount) cell scenes")
// 6 mansion scenes; 2 cell scenes
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Extension (1) | 2024.10.29 |
---|---|
[Swift] Objective-C (1) | 2024.10.28 |
[Swift] - ์ฝ๋ ์ ํ์ (Collection Types) (0) | 2024.10.27 |
[Swift] - ๊ธฐ๋ณธ ์ฐ์ฐ์ (Basic Operators) (0) | 2024.10.26 |
[Swift] ๊ธฐ๋ณธ (The Basics) (0) | 2024.10.24 |
๋๊ธ