TIL: Swift에서 문자열 패턴 찾기 (String Pattern Matching)
📝 학습 내용: ranges(of:) 메서드 활용
1. 기본 문법
import Foundation
func solution(_ myString: String, _ pat: String) -> Int {
let ranges = myString.ranges(of: pat)
return ranges.count
}
2. ranges(of:) 메서드 이해하기
- 반환 타입:
[Range<String.Index>]
- 문자열 내에서 발견된 모든 패턴의 범위를 배열로 반환
- 사용 목적: 문자열 내에서 특정 패턴이 등장하는 모든 위치를 찾기 위해 사용
- 특징: 겹치는 패턴도 모두 찾아냄
3. 동작 예시
let text = "banana"
let pattern = "ana"
4. 실제 사용 예시
print(solution("banana", "ana"))
print(solution("aaaa", "aa"))
5. 주의사항
func wrongSolution(_ myString: String, _ pat: String) -> Int {
return myString.ranges(of: pat)
}
func correctSolution(_ myString: String, _ pat: String) -> Int {
return myString.ranges(of: pat).count
}
6. 다른 문자열 처리 메서드들
contains(_:): 패턴 포함 여부 확인
components(separatedBy:): 패턴을 기준으로 문자열 분리
replacingOccurrences(of:with:): 패턴을 다른 문자열로 교체
7. 장점
- 코드가 간결하고 가독성이 좋음
- Swift 내장 기능으로 최적화되어 있음
- 유니코드 문자도 올바르게 처리
- 시간 복잡도: O(n) (n은 문자열 길이)
8. 활용 시나리오
- 텍스트 분석
- 패턴 매칭
- 문자열 검색 기능 구현
- 중복 문자열 카운팅
🔍 참고 자료
✨ 오늘의 배운 점
ranges(of:)를 사용하면 복잡한 문자열 패턴 매칭을 쉽게 구현할 수 있다
- 반환 타입을 정확히 이해하고 사용하는 것이 중요하다
- Swift의 내장 문자열 처리 메서드들을 활용하면 코드를 더 효율적으로 작성할 수 있다