[Swift] 이름 가리기 (feat. replacingOccurrences Method)

Logan·2020년 10월 19일
1
post-custom-banner

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를 사용해, 다시 문자열로 바꿔준 최종값을 리턴했습니다.

profile
iOS개발자 꿈나무
post-custom-banner

0개의 댓글