1. 문자열 (Strings)
문자열이란 큰따옴표("")로 둘러쌓인 문자의 연속으로 "Hello, Swift!" 같은 것들을 뜻한다. Swift에서는 큰 따옴표만 사용할 수 있고 작은 따옴표를 사용하면 오류가 발생한다.
let str = "Hello Swift!" // 'Hello Swift!'처럼 작은 따옴표를 사용하면 오류 발생
문자열은 String()를 사용해서도 만들 수 있다.
let str = String("Hello, Swift!")
1-1. 문자열 결합
Swift도 Python과 동일하게 + 연산자를 사용하여 문자열을 결합할 수 있다. 또한 += 연산자 역시도 당연히 사용할 수 있다.
var str1 = "Hello"
var str2 = ", Swift!"
print(str1 + str2) // > Hello, Swift!
str1 += str2
print(str1) // > Hello, Swift!
또한 append() 메서드를 사용해서도 문자열을 결합할 수 있다.
var str1 = "Hello"
str1.append(", Swift!")
print(str1) // > Hello, Swift!
1-2. 여러줄 문자열
큰 따옴표를 3개 연속으로 사용하여 여러줄 문자열을 나타낼 수 있다. 여러줄 문자열을 사용할 때 엔터를 입력하면 그대로 문자열에 반영이 되는데 엔터를 눌러도 줄바꿈이 되지 않도록 하고 싶다면 백슬래쉬(\)를 사용하면 된다.
var str1 = """
Hello,
Swift!
"""
var str2 = """
Hello, \
Swift!
"""
print(str1, "\n")
print(str2)
/* [결과]
Hello,
Swift!
Hello, Swift!
*/
1-3. 특수 문자
문자열 내에 특수 문자를 사용할 수 있다. 여기서 특수 문자라 함은 개행, 수평 탭, nil, 큰 따옴표, 작은 따옴표 등을 말한다.
- \n : 개행(줄바꿈)
- \t : 수평 탭
- \0 : 값 없음
- \" : 큰 따옴표
- \" : 작은 따옴표
print("안녕하세요! \n반갑습니다 \t ^_^ \" \' ㅁ\0ㅁ")
/* [결과]
안녕하세요!
반갑습니다 ^_^ " ' ㅁㅁ
*/
만약 문자열에서 이러한 특수 문자를 원래 형태 그대로 출력하고 싶다면 문자열의 시작 큰 따옴표와 끝 큰 따옴표에 # 문자를 붙여주면 된다. 이러한 문자열에서 다시 원래의 특수 문자 기능을 사용하고 싶으면 사용한 #의 개수만큼을 \#n처럼 사용해주면 된다. 시작 따옴표와 끝 따옴표에 사용한 # 문자의 개수는 일치해야 하며, 그렇지 않은 경우에는 오류가 발생한다.
print(#"안녕하세요 \n반갑습니다"#)
print()
print(#"안녕하세요 \#n반갑습니다"#)
print()
print(##"안녕하세요 \#n반갑습니다"##)
print()
print(##"안녕하세요 \##n반갑습니다"##)
print()
/* [결과]
안녕하세요 \n반갑습니다
안녕하세요
반갑습니다
안녕하세요 \#n반갑습니다
안녕하세요
반갑습니다
*/
1-4. for ~ in 문자열
문자열은 for 반복문을 통해 각 문자에 대한 순회가 가능하다.
for c in "ABCDE" {
print(c)
}
/* [결과]
A
B
C
D
E
*/
1-5. 문자열에 변수를 출력하는 방법
문자열에 변수를 출력하기 위해선 큰 따옴표 내부에 \(변수명) 형태로 사용하면 된다. 변수 뿐만이 아니라 연산의 결과, 메서드의 사용 등도 얼마든지 가능하다.
let a = 3
print("a is", a) // 기존의 이러한 형태를
print("a is \(a) \n") // 이렇게 사용할 수 있다
print("3 + 5 = \(3+5)") // 연산의 결과도 사용할 수 있다
/* [결과]
a is 3
a is 3
3 + 5 = 8
*/
1-6. count
문자열의 길이를 확인하기 위해선 (문자열).count 형태로 사용하면 된다.
print("1".count)
print("11".count)
print("111".count)
/* [결과]
1
2
3
*/
1-7. 문자열의 인덱스 ❗️❗️
Python에서는 문자열의 특정 자리 문자를 얻으려면 정수형 인덱스를 사용하면 된다. 그러나 Swift에서는 문자열의 인덱스가 정수형이 아니므로 새로운 형태로 사용해야 한다.
1-7-1. 문자열의 시작 인덱스(startIndex), 끝 인덱스(endIndex)
문자열의 시작 인덱스는 startIndex로 사용할 수 있고 끝 인덱스는 endIndex로 사용할 수 있다. 그러나 endIndex는 문자열의 마지막 문자의 다음 위치를 나타내기 때문에 만약 문자열의 마지막 문자를 얻고 싶다면 문자열.index(before: 문자열.endIndex) 의 형태로 사용해야 한다.
let str: String = "Hello, Swift!"
print("첫 문자 : \(str[str.startIndex])")
print("끝 문자 : \(str[str.index(before: str.endIndex)])")
/* [결과]
첫 문자 : H
끝 문자 : !
*/
1-7-2. 문자열 내 각 문자의 전체 인덱스 탐색 방법
indices를 사용하면 문자열의 전체 인덱스를 탐색할 수 있다.
let str: String = "Hello, Swift!"
for i in str.indices {
print(str[i], i)
}
/* [결과]
H Index(_rawBits: 15)
e Index(_rawBits: 65799)
l Index(_rawBits: 131335)
l Index(_rawBits: 196871)
o Index(_rawBits: 262407)
, Index(_rawBits: 327943)
Index(_rawBits: 393479)
S Index(_rawBits: 459015)
w Index(_rawBits: 524551)
i Index(_rawBits: 590087)
f Index(_rawBits: 655623)
t Index(_rawBits: 721159)
! Index(_rawBits: 786695)
*/
1-7-3. 문자열 내 특정 위치의 문자에 접근하는 방법
Swift에서 문자열 내 특정 위치의 문자를 얻는 과정은 Python만큼 간단하지는 않다. 형태는 다음과 같다.
- 문자열.index(문자열.startIndex, offsetBy: 위치)
let str: String = "Hello, Swift!"
print(str[(str.index(str.startIndex, offsetBy: 0))])
print(str[(str.index(str.startIndex, offsetBy: 1))])
print(str[(str.index(str.startIndex, offsetBy: 2))])
print(str[(str.index(str.startIndex, offsetBy: 3))])
print(str[(str.index(str.startIndex, offsetBy: 4))])
print(str[(str.index(str.startIndex, offsetBy: 5))])
print(str[(str.index(str.startIndex, offsetBy: 6))])
print(str[(str.index(str.startIndex, offsetBy: 7))])
print(str[(str.index(str.startIndex, offsetBy: 8))])
print(str[(str.index(str.startIndex, offsetBy: 9))])
print(str[(str.index(str.startIndex, offsetBy: 10))])
print(str[(str.index(str.startIndex, offsetBy: 11))])
print(str[(str.index(str.startIndex, offsetBy: 12))])
/* [결과]
H
e
l
l
o
,
S
w
i
f
t
!
*/
1-8. 특정 인덱스에 문자 삽입 또는 삭제
위에서 언급한 방법을 활용하여 특정 인덱스에 새로운 문자를 추가하거나, 특정 인덱스의 문자를 삭제할 수 있다.
- 문자열.insert(삽입할 문자, at: 삽입할 인덱스)
- 문자열.remove(at: 삭제할 인덱스)
var str: String = "Hello, Swift!"
str.remove(at: str.index(str.startIndex, offsetBy: 5)) // , 삭제
print(str, "\n")
str.insert("@", at: str.index(str.startIndex, offsetBy: 5)) // @ 삽입
print(str, "\n")
/* [결과]
Hello Swift!
Hello@ Swift!
*/
1-9. 문자열의 비교
비교 연산자를 사용하여 문자열을 비교할 수 있다. 각 문자열의 앞 문자부터 비교를 시작하고 결과가 나지 않는다면 그 다음 문자와의 비교를 이어간다.
print("ABC" == "ABC")
print("ABC" != "ABC")
print()
print("AAA" < "AAB")
print("AAA" > "AAB")
print("AA" < "AAA")
/* [결과]
true
false
true
false
true
*/
끝 !
'[Programming Language] > [Swift]' 카테고리의 다른 글
[Swift] 집합(Set), 집합 선언, count, isEmpty, 추가(insert), 삭제(remove), contain, for ~ in, 집합 연산, isSuperset, isSubset, isDisjoint (0) | 2024.07.06 |
---|---|
[Swift] 배열(Array), 배열 선언 방법, 추가, 수정, 삭제, count, isEmpty, for ~ in (0) | 2024.07.05 |
[Swift] assert와 precondition의 차이점 (0) | 2024.07.02 |
[Swift] 연산자(대입, 산술, 복합 대입, 비교, 삼항, Nil 결합, 범위, 논리) (0) | 2024.07.01 |
[Swift] iOS 개발자로의 첫 걸음 (0) | 2024.06.30 |