Swift의 문자열에 대해서 알아보자
문자열은 보통 아래와 같이 문자열 lteral을 이용하여 표현된다.
let str = "Hello, World"
이와 비슷하게 빈문자열을 만드는 방법은 아래와 같다.
let empryStr = ""
그리고 아래처럼 생성자를 만들 수도 있다.
emptyStr = String()
이 생성자를 이용하면 다른 타입의 값들도 문자로 만들 수 있다.
let a = String(15)
let b = String(true)
let c = String(17.456)
let d = String(str)
이는 함수처럼 사용 가능하며
심지어는 다른 문자열을 새로운 문자열로 만드는데 사용할 수 있다.
또한 숫자를 특정 진수로 변환시킬 수도 있는데
let e = String(160, radix: 16)
// a0
let f = String(160, radix: 8)
// 240
위의 첫번째 예시는 160을 16진수로 표현한 것으로 두번째 아규먼트인 radix가 진수를 나타내며 이를 조정하여 진수값을 변경할 수 있다.
특정문자를 반복할 수 있는 방법도 있다.
let repeatStr = String(repeating: "Hello! ", count: 4)
// Hello! Hello! Hello! Hello!
그리고 특수한 이모지를 만드는 방법도 있는데
let a = "\u{1f44f}"
// 👏
위와 같은 예시 코드를 이용하면 박수 이모지(👏)를 만들 수 있다.
문자열끼리의 연결도 간단한데
let a = String(true)
let b = String(123)
let c = "\(a) \(b)"
// true 123
let d = a + b
// true123
위의 첫번째 예시처럼 String Interpolation 으로 문자열을 동적으로 구성하는 방법도 가능하며 '+' 연산자로도 문자열끼리 연결이 가능하다.
다만 문자열간의 연산에선 오직 '+'이용 가능하며 '-', '*' 등 다른 연산자들은 사용할 수 없다.
또한 복합할당 연산자도 사용 가능하다.
let str = "Hello, Swift"
str += "~!!"
// Hello, Swift~!!
문자열의 길이를 확인할 수 있는 여러 방법들도 있다.
let str = "Hello"
str.count
// 5
str == 0
// false
str.isEmpty
// false
str == "Hi"
// false
"hello" != "Hello"
// true
위의 첫번째 예시는 문자열의 길이를 보여준다.
두번째는 문자열의 길이가 0 이 아님으로 false가 나온다.
세번째는 상수 str이 비어있냐고 묻는데 str = "Hello"이므로 false 이다.
네번째도 str = "Hello" 이기 때문에 false 이며
다섯번째도 swift는 대소문자를 구분하며 서로다름을 의미하는 '!=' 부호를 썼기에 true 이다.
이 외에도 대문자를 소문자로, 소문자를 대문자로 바꿔주는 메소드들이 있는데
let str = "Hello world"
str.lowercased()
// hello world
str.uppercased()
// HELLO WORLD
str.Capitalised
// Hello World
첫번째인 lowrcased는 모든 문자를 소문자로,
두번째인 uppercased 는 모든 문자를 대문자로,
마지막인 Capitalised는 각 단어의 첫번째 글자만을 대문자로 바꿔준다.
위의 메소드 이름들이 모두 -ed로 끝나는데 이러한 이름으로 끝나는 메소드들은 항상 원본을 그대로 두고 새로운걸 리턴한다.
이는 메소드의 결과를 유추하는 단서로 사용된다.
문자는 메모리에 저장될 때 배열형태로 저장된다. 때문에 문자를 열거할 수도 있는데
for str in "Hello"{
print(str)
}
/*
H
e
l
l
o
*/
이렇듯 문자열은 배열과 비슷한 특징르 가지고 있다.
때문에 다음과 같이 사용할 수 도있는데
let str = "12345"
str.randomElement()
위의 식은 문자열 속의 문자하나를 랜덤하게 선정한다.
단어 하나를 랜덤하게 값으로 지정할 뿐만아니라 랜덤한 문자열(String)을 만들 수 도있는데
let str = "12345"
str.shuffled()
Stirng(str.shuffled())
shuffled를 사용하면 기존의 문자열이 랜덤한 문자열(String) 값으로 변한다.