GGURUPiOS
Swift 공식 문서 정리 - (3) Strings and Characters 본문
String And Characters ( 문자열과 문자 )
문자열 리터럴
문자열 리터럴은 큰 따옴표로 둘러싸인 일련의 문자임
let someString = “Some”
여러 줄 문자열 리터럴 ( “”” )
큰 따옴표 세개로 표현 가능
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."
"""
// 소스 코드에 줄바꿈이 포함되어 있으면 문자열 값에도 적용됨
// 줄 바꿈을 사용하고 싶지만, 문자열 값은 변하지 않도록 하려면 해당 줄 끝에 \\ 를 작성
// 아래와 같은 모습
let softWrappedQuotation = """
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."
"""
문자열 리터럴의 특수문자
- 이스케이프된 특수 문자 \\0(null 문자), \\\\(백슬래시), \\t(가로 탭), \\n(줄 바꿈), \\r(캐리지 리턴), \\"(큰따옴표) 및 \\'(작은따옴표)
- \\\\u{n 으로 작성된 임의의 유니코드 스칼라 값 }
확장 문자열 구분 기호 (#)
확장 구분 기호 내에 문자열 리터럴을 배치해서 특수 문자를 포함 할 수 있음
let threeMoreDoubleQuotationMarks = #"""
Here are three more double quotes: """
"""#
빈 문자열 초기화
var emptyString = ""
var anotherEmptyString = String()
// 두가지 방법으로 초기화 가능
isEmpty 속성으로 값이 빈 값은지 확인 가능
if emptyString.isEmpty { print("Nothing") }
문자열은 값 유형
값 유형은 함수나 메서드에 전달되거나 할당될 때 복사 됨
캐릭터 작업
for 문 을 사용하여 개별값에 액세스 할 수 있음
for character in "Dog" {
print(character)
}
// D, o, g 각각 한 번씩 세 번 출력됨
문자열과 문자 연결
String은 더하기 연산자와 함께 연결 할 수 있음
let string1 = "hello"
let string2 = " there"
var welcome = string1 + string2 // "hello there"
var instruction = "look over"
instruction += string2 // "look over there"
// append를 사용해서 추가 가능
let someWord = "hi"
welcome.append(someWord) // "hello there hi"
문자열 보간
문자열 보간이란 문자열 리터럴 내에 상수, 변수, 리터럴 및 식의 혼합에서 새 값을 생성하는 방법
(그냥 단순히 문자열 내에 \()를 활용해서 상수, 변수 값을 사용할 수 있다는 말 인듯)
let multiplier = 3
let message = "\\(multiplier) times 2.5 is \\(Double(multiplier) * 2.5)"
유니코드
String과 Character유형은 유니코드와 호환됨
문자열을 유니코드 스칼라 시퀀스를 사용해서 표현할 수 있다는 것 같음
실제로 유니코드를 쓰는 것을 보지 못해서 나중에 필요 할 때 더 공부해보는 편이 나아보임.
유니코드 스칼라? → 유니코드 "문자"에 배당된 숫자로, 통상 "U+" 뒤에 4~6자리 16진수로 표기한다. ex) U+000
문자 세기
count 속성으로 셀 수 있음
let word = "hello"
print(word.count) // 5
문자열 액세스 및 수정
문자열 인덱스
문자열의 각 값에는 인덱스로 접근 할 수 있음
하지만 문자열은 정수 값으로 인덱싱 할 수 없음.
따라서 startIndex, endIndex, index(before:), index(after:), index(_:offsetBy:) 메소드 등을 이용해 문자열에서 접근 가능
let word = "hello world!"
print(word[word.startIndex]) // h
print(word[word.index(before: word.endIndex)]) // ! 출력
print(word[word.index(after: word.startIndex)]) // e 출력
let index = word.index(word.startIndex, offsetBy: 7)
print(word[index]) // o 출력
개별 문자에 접근 indices 프로퍼티 활용
for index in word.indices {
print("\\(word[index]) ", terminator: "")
}
// h e l l o w o r l d !출력
문자의 삽입과 삭제
insert(: at:), insert(contentsOf: at:), remove(at:), removeSubrange(:) 메소드 사용 가능
var welcome = "hello"
welcome.insert("!", at: welocme.endIndex)
// hello! 끝 부분에 ! 삽입
welcome.insert(contentsOF: "there", at: welcome.index(before: welcom.endIndex))
// hello there! 끝부분 전에 there 삽입
welcome.remove( at: welcome.index(before: welcom.endIndex))
// hello there
let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
welcome.removeSubrange(range)
// hello
부분 문자열
부분 문자열은 prefix (_:)와 같은 메소드를 사용해서 잘라낼 수 있다.
그렇지만 String이 아닌 SubString 인스턴스이기 때문에 오래사용 한다면 문자열 인스턴스로 변환 후 사용하는것이 좋다.
→ 메모리 관리 때문, SubString은 원본 String의 메모리를 참조해서 사용함.
문자열과 문자 비교
==, != 연산자 사용
Swift에서 문자열과 문자의 비교는 언어를 고려하지 않음, 언어와 상관없이 같은문자면 같은 문자로 취급
접두사와 접미사 비교
hasPrefix(:), hasSuffix(:) 메소드 사용
var someString = "Act 1 Scene 1"
if someString.hasPrefix("Act 1") { print("True") } // 접두사가 Act 1 인지 확인 -> True 출력
if someString.hasSuffix("Scene 1" { print("True") } // 접미사가 Scene 1 인지 확인 -> True 출력
'Swift > 공식문서 정리 ( 문법 )' 카테고리의 다른 글
Swift 공식 문서 정리 - (5) Control Flow (0) | 2023.04.19 |
---|---|
Swift 공식 문서 정리 - (4) Collection Types (0) | 2023.04.19 |
Swift 공식 문서 정리 - (2) Basic Operators (기본 연산자) (1) | 2023.04.18 |
Swift 공식 문서 정리 - (1) The Basics (0) | 2023.04.18 |
Swift 공식 문서 정리 - About Swift (0) | 2023.04.18 |