본문 바로가기

Swift Language

Swift Language - 2 - 문자열과 문자 (Strings and Characters)

문자열 리터럴 (Strings)

// 문자열은 큰 따옴표(“)로 묶어 표현 합니다.

let something = "Some string literal value"


// 여러줄 문자열을 사용할 때는 첫 시작의 """ 다음 줄부터 마지막 """의 직전까지를 문자열로 봅니다.

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."
"""

 

빈 문자열 초기화

var emtpryString = ""
var anotherEmptyString = String()

 

문자 (Characters)

// 문자열의 개별 문자를 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"

 

문자 세기

// 문자열의 문자의 순자를 세기 위해서는 문자열의 count 프로퍼티를 이용합니다.

  let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪"
  print("unusualMenagerie has \(unusualMenagerie.count) characters")
  // "unusualMenagerie의 문자는 40개"

 

문자열 인덱스

let greeting = "Guten Tag!"
greeting[greeting.startIndex]
// G
greeting[greeting.index(before: greeting.endIndex)]
// !
greeting[greeting.index(after: greeting.startIndex)]
// u
let index = greeting.index(greeting.startIndex, offsetBy: 7)
greeting[index]
// a

 

문자의 삽입과 삭제

// 문자의 삽입과 삭제에는 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

 

부분 문자열

/*
문자열에서 부분문자를 얻기 위해 prefix (_:)와 같은 서브스크립트 메소드를 이용할 수 있는데, 
그렇게 얻은 부분 문자열은 문자열(String) 인스턴스가 아니라 부분문자열(SubString) 인스턴스 입니다. 
만약 부분 문자열을 단기간에 사용하는게 아니라 오랜기간 사용한다면 문자열 인스턴스로 바꿔서 사용하는게 좋습니다.
*/


let greeting = "Hello, World!"
let index = greeting.index(of: ",") ?? greeting.endIndex
let beginning = greeting[..<index]
// beginning : Hello

// SubString인 beginning을 String으로 변환
let newString = String(beginning)


// 위와 같이 사용해야하는 것이 좋은 이유는 메모리 관리 때문입니다.

 

접두사와 접미사 비교

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

 

 

 

출처 https://jusung.gitbook.io/the-swift-language-guide/language-guide/03-strings-and-characters