[Swift ]문자열

Judy·2021년 12월 14일
0

Swift 공부

목록 보기
3/11

String

1. 정의

유니코드 문자로 구성된 문자열
A Unicode string value that is a collection of characters.

"Swift"처럼 일련의 문자들의 모음을 말한다.

2. 문자열 기본 사용

2-1 문자열 생성

let greeting = "Welcome!"

2-2 다중열 : """ """

let banner = """
          __,
         (           o  /) _/_
          `.  , , , ,  //  /
        (___)(_(_/_(_ //_ (__
                     /)
                    (/
        """

"""로 여러 줄의 문자열 사용이 가능하다. 다중열을 한 줄 내려서 써야한다.

2-3 문자열 결합 : +

let longerGreeting = greeting + " We're glad you're here!"
// longerGreeting == "Welcome! We're glad you're here!"

2-4 문자열 비교

let cafe1 = "Cafe\u{301}"
let cafe2 = "Café"
print(cafe1 == cafe2)
// Prints "true"

'==' 와 더불어 '<', '>=' 와 같은 비교 구문은 항상 유니코드 표준 표현을 사용하여 가능하다.


3. 문자열 활용

3-1 문자열 삽입

문자열 중간에 \()를 넣어 표현식이나 변수를 문자열로 만들 수 있다. 변수면 변수의 값이, 표현식이면 결과 값이 들어간다.

let name = "Rosa"
let personalizedGreeting = "Welcome, \(name)!"
// personalizedGreeting == "Welcome, Rosa!"

let price = 2
let number = 3
let cookiePrice = "\(number) cookies: $\(price * number)."
// cookiePrice == "3 cookies: $6."

3-2. 문자열 접근

for - in

문자열은 Character로 구성되어 for-in 구문으로 각 요소에 접근할 수 있다.

let str = "string"

for c in str{
    print("element : \(c)")
}

// element : s
// element : t
// element : r
// element : i
// element : n
// element : g

Subscript []

서브스크립트를 사용해서 접근할 수도 있다. 대괄호 '[]'를 이용하는데 문자열을 Int값의 인덱스로 접근할 수 없고 대신 String.Index 형을 이용해야 한다.

let str = "Hello"

str[..<str.endIndex] // Hello

3-3 인덱스 구하기 - String.index

인덱스를 구한 후 대괄호를 통해 문자열에 접근할 수 있다.

- startIndex : 문자열의 첫 번째 요소 인덱스

- endIndex : 문자열의 마지막 요소 인덱스 다음 위치

- index(before: String.Index) : 인자 인덱스 한 칸 앞

- index(after: String.Index) : 인자 인덱스 한 칸 뒤

- index(String.Index, offsetBy: String.IndexDistance) : 인자 인덱스에서 offsetBy 만큼 떨어진 위치

let str = "ABCDE"

str[str.startIndex] // A
str[str.index(after: str.startIndex)] // B
str[str.index(before: str.endIndex)] // E
str[str.index(str.startIndex, 2)]	// C
str[str.startIndex ..< str.endIndex] // ABCDE

인덱스 찾기 : firstIndex(of:), lastIndex(of:)

func firstIndex(of element: Character) -> Index?
// 문자가 앞에서 몇 번째인지
func lastIndex(of element: Character) -> Index?
// 문자가 뒤에서 몇 번째인지

3-4 Substring

문자열의 조각을 이용하면 String 형이 아닌 Substring 형이 된다. 원래 문자열의 저장소를 그대로 이용하기 때문에 빠르고 효율적이다.

접두어, 접미어 찾기 : (prefix(:), suffix(:))

func prefix(Int) -> Substring // 앞에서부터 Int만큼의 길이 문자열
func suffix(_ maxLength: Int) -> Substring // 뒤에서부터 Int만큼의 길이 문자열
let numbers = [1, 2, 3, 4, 5]

print(numbers.prefix(2))
// Prints "[1, 2]"
print(numbers.prefix(10))
// Prints "[1, 2, 3, 4, 5]"


print(numbers.suffix(2))
// Prints "[4, 5]"
print(numbers.suffix(10))
// Prints "[1, 2, 3, 4, 5]"

각각 upto, from 으로 인덱스를 넣어주면 [처음-인덱스]/[인덱스-끝] 를 얻을 수 있다.

4. 문자열과 배열

4-1 문자열을 배열로 전환

Array 생성자 사용

let str = "hello"
let arr = Array(str)
print(arr)
//["h", "e", "l", "l", "o"]

map 사용

let str = "hello"
let arr = str.map { String($0) }
print(arr)
//["h", "e", "l", "l", "o"]

4-2 배열을 문자열로 전환

그 외

- 문자의 위치 찾기 : firstIndex(of:), lastIndex(of:)

let str = "Hello World"
if let index = str.firstIndex(of: "o") {
    print(index) // 4
}

if let index = str.lastIndex(of: "o") {
    print(index) // 7
}

- 문자(열) 포함 : contains(_:)

func contains(_ element: Character) -> Bool


let name = "My name is James"
print(name.contains("James"))
// Prints "true"
print(cast.contains("Kim"))
// Prints "false"

- 대소문자 변환 : uppercased(), lowercased()

func uppercased() -> String // 대문자로 변환
func lowercased() -> String // 소문자로 변환

새로운 String을 만들어 냄

let cafe = "Café 🍵"
print(cafe.uppercased())
// Prints "CAFÉ 🍵"

let cafe = "BBQ Café 🍵"
print(cafe.lowercased())
// Prints "bbq café 🍵"

- 문자열 길이 : count

var count: Int { get }

- 빈 문자열 확인 : isEmpty -> Bool

  • 문자열을 배열로 만들기
  • 배열을 문자열로 만들기
  • 반복되는 문자열로 초기화 init(repeating: String, count: Int)

문자열을 숫자로 변경

문자열에서 위치 값 접근

문자열에서 문자 얻기

출저 : developer.apple | String

profile
iOS Developer

0개의 댓글