replacingOccurrences(of:with:)
func replacingOccurrences(of target: String,
with replacement: String) -> String
replacingOccurrences(of:with:) Method를 사용하면 특정 문자열을 바꿀 수 있습니다.
target 파라미터에 바꾸고 싶은 문자열을 전달하고, replacement 파라미터에 바꿀 문자열을 전달해주면 됩니다.
이름 가리기 1차 시도
이름을 입력하면, 두번째 문자만 별표*를 사용해서 가리는 함수를 만들어야 합니다.
func hideName(myName: String) -> String {
let secondIndex = myName[myName.index(after: myName.startIndex)]
return myName.replacingOccurrences(of: String(secondIndex), with: "*")
}
hideName(myName: "홍길동")
// returns : "홍*동"
원하는대로 구현이 된 것 같았지만, 아쉬운 점이 있습니다.
replacingOccurrences(of:with:) Method의 target 파라미터엔 문자열을 전달하기 때문에,
이름에 동일한 문자가 또 들어간다면, 그 문자도 모두 별표로 바꿔버립니다.
func hideName(myName: String) -> String {
let secondIndex = myName[myName.index(after: myName.startIndex)]
return myName.replacingOccurrences(of: String(secondIndex), with: "*")
}
hideName(myName: "베르나르 베르베르")
// returns : "베*나* 베*베*"
이름 가리기 2차 시도
func hideName(myName: String) -> String {
var myName = myName.map { String($0) }
myName[1] = "*"
return myName.joined()
}
hideName(myName: "베르나르 베르베르")
// returns: "베*나르 베르베르"
파라미터로 전달받은 문자열을 문자배열로 바꿔줬습니다. 문자열을 문자 배열로 바꾸기 링크
그리고 배열의 두번째 위치한 요소의 값을 별표로 바꾸고, joined() method를 사용해, 다시 문자열로 바꿔준 최종값을 리턴했습니다.