안녕하십니까 공부하는 개발자입니다.
오늘 포스팅은 문자열을 편집하는 메서드들 입니다.
첫번째는 append입니다.
1
2
3
|
let str = "Hello"
str.append(", ")
|
cs |
append의 경우에는 str의 문자열에 뒤에 문자를 추가 할 수 있습니다.
"Hello, "
이런식으로 결과가 나옵니다.
비슷한 메서드인 appending이 있습니다.
appending의 경우에는 append와 동일하지만 원본을 훼손하지는 않습니다.
무슨 말이냐면
1
2
3
4
|
let str = "Hello, "
let a = str.appending("Swift")
str //"Hello, "
a // "Hello, Swift"
|
cs |
이러한 코드가 있을 때 str의 경우에는 값이 변화가 없습니다.
또한 appending은 새로운 문자열을 반환합니다.
추가적으로 일반 메서드에서 ing가 붙는다면 원본을 훼손하지 않는 메서드라고 생각하시면 편합니다.
또다른 비슷한 코드의 경우에는 appendingFormat입니다.
1
|
"File Size is".appendingFormat("%.1f", 12.3456)
|
cs |
appendingFormat의 경우에는 포멧을 변경하여 문자열을 붙여줍니다.
보기의 결과는 "Fil Size is 12.3"으로 변경되어 합쳐지게 됩니다.
두번째의 경우는 문자열 사이에 삽입하는 메서드 입니다.
삽입의 경우에는 insert메서드를 이용합니다.
1
2
3
|
var str = "Hello Swift"
str.insert(",", at: str.index(str.startIndex, offsetBy: 5))
|
cs |
이러한 형식으로 첫 인자는 넣고싶은 문자열, at의 인자열은 추가될 곳의 index를 넣어준다면
"Hello, Swift"로 중간에 ","가 삽입되어 진행이 됩니다.
그렇기 때문에 firstIndex메서드를 이용한다면 내가원하는 인자의 첫번째 문자열이 나왔을때 index를 구하여 insert를 해주는 방법도 가능합니다.
1
2
3
4
5
|
var str = "Hello Swift"
if let sIndex = str.firstIndex(of: "S"){
str.insert(contentsOf: "Awesome", at: sIndex)
}
|
cs |
이런식으로 삽입이 가능합니다.
세번째는 코드를 변경하는 replaceSubrange메서드 입니다.
1
2
3
4
5
|
var str = "Hello Objective-C"
if let range = str.range(of: "Objective-C"){
str.replaceSubrange(range, with: "Swift")
}
|
cs |
str.range(of: )메서드를 이용하여 원하는 문자열의 범위를 구하여 range에 대입을 해주고
replaceSubrange(범위, with: 교체할 문자열)을 적어주면 됩니다.
1
2
3
4
5
|
var str = "Hello Objective-C"
if let range = str.range(of: "Hello"){
let s = str.replacingCharacters(in: range, with: "Hi")
}
|
cs |
또 다른 메서드인 replacingCharacters의 경우에는 원본을 훼손하지 않으며 새로운 문자열을 리턴해 줍니다.
이 코드들을 좀 더 간단하게 바꿔주는 메서드가 replacingOccurrences메서드 입니다.
1
2
3
|
var str = "Hello Objective-C"
var s = str.replacingOccurrences(of: "Objective-C", with: "Swift")
|
cs |
이런식으로 조금 더 간편하게 사용할 수 있습니다.
replacingOccurrences또한 새로운 문자열로 리턴하기 때문에 원본을 훼손하지 않습니다.
거기에 비교하는 문자열의 대소문자을 구분하고 싶지 않다면 option으로 [.caseInsensitive]를 추가하면
대소문자를 구분하지 않습니다.
네번째 메서드는 삭제하는 remove메서드 입니다.
1
2
3
4
5
|
var str = "Hello, Awesome Swift!!!"
let lastCharIndex = str.index(before: str.endIndex)
var removed = str.remove(at: lastCharIndex)
|
cs |
remove메서드의 경우에는 삭제된 문자열을 리턴해 줍니다.
str의 원본을 삭제하여서 이후 str을 호출하면 !!만 나오게 됩니다.
비슷한 메서드로는 removeFirst()메서드가 있습니다.
removeFirst의 경우에는 문자열의 첫번째 문자열을 삭제하고 삭제된 문자열를 리턴해 줍니다.
인자값으로 정수를 넣게되면 첫번째 문자열에서 인자값번째의 문자열까지 삭제할 수 있습니다.
이와 반대인 removeLast()메서드가 있습니다. 똑같이 인자값번째 문자열까지 삭제가 가능합니다.
다음은 내가 원하는 문자열을 삭제하는 reomveSubrange입니다.
1
2
3
4
5
|
var str = "Hello, Awesome Swift!!!"
if let range = str.range(of: "Awesome"){
str.removeSubrange(range)
}
|
cs |
다음 코드의 경우에는 Awesome의 코드를 삭제를 진행한 코드입니다.
그리고 모든 문자열을 삭제하여 빈 문자열을 생성하는 removeAll메서드입니다.
그리고 옵션으로 keepingCapacity를 true로 변경을 진행하면 메모리에서는 삭제가 되지 않습니다.
다섯번째는 drop메서드 입니다.
drop메서드의 경우는 reomve와 비슷하지만 메모리공간에서 조금 차이가 있습니다.
1
2
3
|
var str = "Hello, Awesome Swift!!!"
var subStr = str.dropLast(3)
|
cs |
subStr의 경우에는 결과값은 !!!가 없어지겠지만 메모리는 str의 메모리를 공유하고 있습니다.
!!!개 만큼의 메모리를 제외하고 공유를 하는 형식이라고 볼 수 있습니다.
'Ios > Swift' 카테고리의 다른 글
[Swift]String Option 문자의 옵션 모음 (0) | 2022.06.24 |
---|---|
[Swift] Comparing String 문자열 비교하기 (0) | 2022.06.23 |
[Swift] swift subString 문자열 자르기 (0) | 2022.06.21 |
[Swift] String Basics 문자열 기본 (0) | 2022.06.20 |
[Swift] String Indices String타입의 index (0) | 2022.06.19 |