메소드를 활용하여 문자열을 편집하겠습니다.
var str = "Hello"
이 코드에 새로운 문자나 문자열을 이어주고 싶다면
str.append(",")
이런식으로 append 문자열을 사용합니다.
실행 후 결과를 보면
"Hello," 이라는 결과값이 나왔습니다.
규먼트로 이어준 결과값이 연결된 것을 확인할 수 있습니다.
let s = str.appending("Swift")
append 와 appending 이라는 메소드가 있습니다.
이 두 메소드의 차이는
append 인 메소드는 리턴 타입이 없습니다.
다시말해 값을 리턴하지 않는다는 것 입니다.
반면 appending 메소드는 string 타입을 리턴합니다.
append 메소드는 파라미터로 전달한 문자열을
대상문자열에 바로 연결합니다
하지만 appending 메소드는 대상문자열에 직접 연결하는 것이 아니라
일단 새로운 복사본을 만들어 연결한 다음 이 복사본을 리턴하는 것 입니다.
이번에는 문자열을 중간에서 삽입해 보겠습니다.
var str = "Hello swift"
str.insert(" , ", at:str.index(str.startIndex, offsetBy: 5 ))
이런식으로 코드를 사용하면 출력값에는 Hello,swift 라는 단어가 출력되게 됩니다.
insert한 , 이 hello 와 swift 사이에 들어간 것 입니다.
이번에는 문자열을 교체해보겠습니다.
var str = "Hello, Objective-C"
if let range = str.range(of:"objective-c"){
str.replaceSubrange(range, with: "swift")
}
str
해당 문자열을 출력해보면 Hello, objective-c 가 출력되는 것이 아닌
Hello, swift 라는 문자열이 출력되게 됩니다.
replaceSubrange는 첫번째 파라미터로 전달한 범위를 두번째 파라미터로 전달한 범위로 바꾸는 것 입니다.
그렇게 하려면 우선 범위가 필요합니다.
objective -c 의 범위가 필요한 범위연산자를 사용하면 코드가 길어지기 때문에 range of 라는 연산자를 사용했습니다.
이건 파라미터로 전달한 문자열을 검색한 다음 범위를 리턴해 줍니다.
검색결과가 없으면 nil을 리턴하기 때문에 옵셔널 바인딩으로 바인딩 해 주었습니다.
이번에는 문자열을 삭제해보겠습니다.
var str = "Hello, Awesom swift!!!"
이 코드의 맨 마지막에 있는 느낌표를 하나 삭제해보겠습니다.
그렇다면 index가 필요합니다.
이 전 string 복습에서 적었던 것과 같이 마지막 문자의 index는
end 인덱스의 바로 이전 index이다 라고 적었었습니다.
let lastCharIndex = str.index(before: str.endIndex)
var removed = str.remove(at:lastCharIndex)
removed
str
이런식으로 코드를 작성하고 컴파일 해주면
"Hello, Awesom swift!!"
이런식으로 느낌표가 하나 사라진 상태로 나오게 됩니다.
remove(at)의 자동완성을 보면 리턴 타입이 그냥 charcter 입니다.
만약 옵셔널로 설정되어있었다면 잘못된 index를 전달했을 때 nil을 리턴했을 것 입니다.
그렇기 때문에 잘못된 index를 전달하지 않도록 조심해야 합니다.
removed = str.removeFirst()
removed
str
removeFirst는 첫번째 문자를 삭제합니다.
해당 코드를 실행해 보면
"ello, Awesom swift!!"
라는 문자열이 나오게 됩니다.
'기초' 카테고리의 다른 글
git 사용법 (0) | 2024.09.01 |
---|---|
Homebrew 설치하기 (0) | 2024.09.01 |
12. string (0) | 2024.06.02 |
11.Functions & Closures (1) | 2024.06.02 |
10.Optionals (0) | 2024.06.02 |