원하는 만큼 하진 못했지만 좋은 책을 만났으니+적절한 휴식 성과가 있었다고 위안하며 마무리
문자열과 배열은 스위프트에서는 나름 차이가 조금 있다(어제내용도 그렇지만) 그런 부분이 javascript 나 python과는 조금 다른 부분
어쨌든 collection 프로토콜을 따르기 때문에 insert, replace, append, remove 등을 가지고 있다는 것은 일맥상통한다 , 자연스럽게 외워질 내용들일듯
가볍게 정리
스위프트는 대소문자를 구분한다 (내일 배울 내용에서 또 나올 듯)
losercased() , uppercased(), capitalized
count, isEmpty, contains(), randomElement()
" " 와 "" 의 count와 isEmpty를 생각해보자
빈문자열 nil아님 주의
문자열의 인덱스는 String.index타입 != 배열의 정수타입 / 서브스크립트 사용가능 / Index메서드로 인덱스를 구해서 서브스크립트 문법을 쓰자
index(_,offSetBy: ), index(before: ), index(after: )
index.fristIndex(of: ), index.lastIndex(of: ) => 옵셔널임을 주의, unwrapping필요
문자열.indeices 속성 => 문자열의 인덱스들을 꺼낼수있다 / 반복문과 사용하여 서브스크립트로 문자들을 하나씩 꺼내보자 (print에 terminator: "" 을 넣어보자)
공백 다음문자를 서브스크립트 문법으로 출력하려면? 어떻게 활용해야할까 : 공백 문자 인덱스를 찾고 => 해당 인덱스와 1글자 차이나는 인덱스를 구한후 서브스크립트를 쓴다
서브스크립트 내 인덱스가 범위를 넘어가면 에러발생 => endIndex를 그대로 쓰면 에러가 난다 => 마지막 글자를 얻으려면 어떻게 해야하는지 생각해보자 (offsetBy, before 방법두가지)
에러를 방지하기 위해 첫번째 인덱스와 마지막인덱스사이에 내가 구한 인덱스가 있다는걸 어떻게 확인하는 로직을 작성할지 생각해보자
범위 [lower...upper] => lower부터 upper까지 출력됨
range메서드는 옵셔널반환 => unwrapping이 필요함에 주의! / range(of: ), range(of: ,options: [.caseInsensitive])!
문자열사이의 거리를 정수형태(offsetBy에 쓰듯)로 distance메서드로 구할수있다
삽입 insert메서드 /insert( , at:), insert(contetnsOf: , at:)
교체 replaceSubrange메서드 / replaceSubrange(범위, with:문자/문자열) replacingOccurances메서드(원본유지, 변형 리턴 => 받아서 사용) replacingOccurances(of: 문자/문자열, with:문자/문자열) => options, range등 추가가능
추가 append메서드
제거 remove메서드(다양함) remove(at: 인덱스) / removeSubrange(범위) , removeAll(=>keepingCapacity 옵션추가가능) , removeFirst(개수), removeLast(개수)