Swift String에서 원하는 문자열 Index 찾기

박성민·2021년 3월 22일
0

Swift 코테

목록 보기
1/1

코테 문제 풀다가 원하는 문자열이 나오는 위치와 몇개가 나오는지에 따라 정렬해야하는 경우가 있었었습니다.

range(of:) -> Range?

주어진 문자열 내에서 특정 문자열의 범위를 알고 싶은 경우, range(of:)를 사용하여 문자열 안에 처음으로 일치하는 문자열의 범위를 알아낼 수 있습니다.

Option (각종 NSString.CompareOptions들을 사용할 수 있다.)

  • .backwards: 뒤에서부터 문자열을 검색하면서 처음으로 찾은 문자열의 인덱스를 리턴해줍니다.
  • .caseInsensitive: 문자열을 비교할 때 대소문자를 구분하지 않습니다.

distance(from:to:) -> IndexDistance (IndexDistance = Int)

from, to 두 Index 사이의 거리를 알려줍니다.

let word = "AA"
var str = "BAAAAAAA"
var answer = [Int]()
var start = 0

while let range = str.range(of: word) {
	start += leaf.distance(from: leaf.startIndex, to: range.lowerBound)
    answer.append(start)
    start += leaf.distance(from: leaf.startIndex, to: range.upperBound) - 1
    leaf = String(leaf[range.upperBound...])
}

print(answer) // [1, 3, 4]
  1. range(of:)를 통해 문자열에 원하는 word가 있으면 while 반복문 실행
  2. answer에 첫번째 Index 추가
  3. 찾아낸 범위 잘라내기
  4. 반복~

출처 및 참고

profile
iOS시작~

0개의 댓글