2017-12-26 20 views
-1

Swift 4는 String에 대한 많은 새로운 변경 사항을 도입했습니다. 문자열에있는 하위 문자열의 모든 인스턴스를 찾는 기본 제공 메서드가 있는지 궁금합니다. 여기 Swift 문자열 내의 모든 하위 문자열을 찾는 효율적인 방법

내가 찾고 있어요 일의 종류 :

let searchSentence = "hello world, hello" 
let wordToMatch = "hello" 

let matchingIndexArray = searchSentence.indices(of: "wordToMatch") 

'matchingIndexArray'다음 것 [0, 13]

답변

0
import Foundation 

let searchSentence = "hello world, hello" 

var searchRange = searchSentence.startIndex..<searchSentence.endIndex 
var ranges: [Range<String.Index>] = [] 

let searchTerm = "hello" 

while let range = searchSentence.range(of: searchTerm, range: searchRange) { 
    ranges.append(range) 
    searchRange = range.upperBound..<searchRange.upperBound 
} 

print(ranges.map { "(\(searchSentence.distance(from: searchSentence.startIndex, to: $0.lowerBound)), \(searchSentence.distance(from: searchSentence.startIndex, to: $0.upperBound)))" }) 

출력 :

["(0, 5)", "(13, 18)"] 
+0

@JoshCaswell 아니; 그것을 게시하기 전에 CodeRunner에서 시도했습니다. 서면으로 Swift 4에서 작동하며 나열된 출력을 제공합니다. –

+0

@JoshCaswell 스위프트 3 이후로 적어도 거기에 있었다고 생각합니다. 그것이 downvote를 제거하시기 바랍니다, 그 이유는 거기에 넣어 이유는 무엇입니까? –

+0

@ JoshCaswell 박람회. –