swift

스위프트의 배열과 문자열 꿀팁들

ag2개발자 2022. 2. 7. 04:44

공부하다가 스위프트의 배열과 문자열은 파이썬과 달라서 정리해 봅니다.

주의할 점 위주로 정리해 봤습니다.

 

스위프트에서 문자열을 배열로 바꾸는 법

여러가지가 있으니 코드로 소개해 드리겠습니다.

열거형:

let str = "ABC"
var arr = [Character]()

for i in str {
    arr.append(i)
}

print(arr)

// ["A", "B", "C"]

Array생성자로 직접 변환하기:

let str = "ABC"
let arr = Array(str)
print(arr)

// ["A", "B", "C"]

map 이용하기:

let str = "ABC".map { (n: Character) -> Character in
    return n
}

let str = "ABC".map { $0 }

// ["A", "B", "C"]

 

 

 

+) 스위프트는 정말 엄밀한 언어이기 때문에... 문자열과 캐릭터형을 구분해야합니다.

var n = 123
let digits = String(n).map { $0 }
print(type(of:digits[0])) // Character

str에서 하나의 값(ex) digits[0])은 파이썬에선 str이지만 스위프트에서는 케릭터입니다.

즉 위의 코드로 digits를 출력해보면 ["1", "2", "3"]이 나오는데

각각은 케틱터 타입을 갖습니다.

이것을 정수 배열 [1, 2, 3]으로 바꾸려면

var n = 123
let digits = String(n).map { Int(String($0))! }
print(digits)

요렇게 스트링으로 바꿔줬다가 다시 인트로 바꿔줘야 합니다.

정수로 바꿀때 optional타입으로 바뀌니 언래핑 잊지맙시다.

이렇게 함으로써 배열의 정수값들로 여러 조작이 가능해지죠.

 

 

파이썬처럼 스위프트도 문자열에서 한개의 문자씩 for문으로 접근할 수 있을까요?

두가지 코드를 예시로 들겠습니다.

var a = 123
var b = String(a)
for i in b{
print(i)
}    //가능!
for i in 0..<b.count{
    print(b[i])
}    //불가능!!!
print(b.count)    //개수를 세는건 가능합니다

즉 캐릭터로서의 접근은 가능하나 배열로서의 접근은 불가능합니다.

 

 

 

스트링으로 이루어진 배열을 어떻게 합칠까요?

 

joined함수를 이용합니다.

var a = ["1", "2", "3"]
print(a.joined())
// 123

'swift' 카테고리의 다른 글

스위프트 배열에 원소 삽입, 제거, 찾기, 포함  (0) 2022.02.07
Swift 고차함수 Map, Filter, Reduce  (0) 2022.02.05
스위프트 for문  (0) 2022.02.03
스위프트 배열과 enumerated()  (0) 2022.02.03
swift String.Index  (0) 2022.02.03