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

Logan·2020년 10월 19일
1

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개발자 꿈나무

0개의 댓글