[Swift] String 다루기 2(특정 문자 찾기)

작성일 :

특정 문자열 위치 찾기


Swift에서 특정 문자열의 위치를 찾는 방법은 range(of:) 메서드를 사용하는 것입니다.

range(of:) 메서드는 대상 문자열에서 특정 문자열이 처음으로 나타나는 위치를 검색하는 기능을 제공합니다. 이 메서드는 검색할 문자열을 매개변수로 받으며, 해당 문자열이 검색된 경우 검색된 문자열의 범위를 반환합니다. 검색된 문자열이 없는 경우 nil을 반환합니다.

예를 들어, 다음과 같은 문자열이 있다고 가정해봅시다.

swift
let str = "Swift is a powerful and intuitive programming language."

이 문자열에서 "powerful"이라는 단어가 처음으로 나타나는 위치를 찾으려면 range(of:) 메서드를 다음과 같이 사용할 수 있습니다.

swift
if let range = str.range(of: "powerful") {
    let startIndex = str.distance(from: str.startIndex, to: range.lowerBound)
    let endIndex = str.distance(from: str.startIndex, to: range.upperBound)
    print("Found at index \(startIndex) to \(endIndex - 1)")
} else {
    print("Not found")
}

위 코드에서 range(of:) 메서드는 str 문자열에서 "powerful"이라는 단어가 처음으로 나타나는 위치를 검색합니다. 검색 결과가 존재하는 경우 해당 범위를 나타내는 Range<String.Index> 타입의 값을 반환합니다. 반환된 범위는 시작 위치와 끝 위치를 각각 나타내는 lowerBound와 upperBound 프로퍼티를 가집니다.

위 코드에서는 if let 구문을 사용하여 range(of:) 메서드의 반환값이 nil이 아닌 경우에만 처리를 수행합니다. 검색된 범위의 시작 위치와 끝 위치를 startIndex와 endIndex 상수에 저장한 후, 해당 범위를 출력합니다. 시작 위치와 끝 위치는 distance(from:to:) 메서드를 사용하여 계산합니다. 마지막으로, 검색 결과가 존재하지 않는 경우 "Not found"를 출력합니다.

또한, range(of:) 메서드는 검색할 문자열의 대소문자를 구분하지 않도록 하는 options 매개변수와 검색을 시작할 위치를 지정하는 range 매개변수를 제공합니다. 자세한 내용은 Swift 공식 문서에서 확인할 수 있습니다.

특정한 하나의 문자만


Swift에서 특정 문자를 찾는 방법은 firstIndex(of:) 메서드를 사용하는 것입니다. 이 메서드는 대상 문자열에서 지정한 문자가 처음으로 나타나는 위치를 찾아 해당 인덱스를 반환합니다.

예를 들어, 다음과 같은 문자열이 있다고 가정해봅시다.

swift
let str = "Swift is a powerful and intuitive programming language."

위 코드에서 firstIndex(of:) 메서드는 str 문자열에서 "p"라는 문자가 처음으로 나타나는 위치를 검색합니다. 검색 결과가 존재하는 경우 해당 인덱스를 반환하며, 반환된 인덱스는 distance(from:to:) 메서드를 사용하여 시작 위치에서부터의 거리를 계산합니다. 이후, 검색된 인덱스를 출력합니다.

만약 검색 결과가 존재하지 않는 경우 firstIndex(of:) 메서드는 **nil**을 반환합니다. 따라서, if let 구문을 사용하여 검색 결과가 존재하는 경우에 대해서만 처리를 수행하도록 합니다.

또한, firstIndex(of:) 메서드는 검색할 문자열의 대소문자를 구분하지 않도록 하는 options 매개변수와 검색을 시작할 위치를 지정하는 startIndex 매개변수를 제공합니다. 자세한 내용은 Swift 공식 문서에서 확인할 수 있습니다.