Hi,

I think this is important enough and useful for we to be in the core standard 
library

extension String {

    func index(of string: String, options: String.CompareOptions = .literal) -> 
String.Index? {
        return range(of: string, options: options)?.lowerBound
    }

    func indexes(of string: String, options: String.CompareOptions = .literal) 
-> [String.Index] {
        var result: [String.Index] = []
        var start = startIndex
        while let range = range(of: string, options: options, range: 
start..<endIndex) {
            result.append(range.lowerBound)
            start = range.upperBound
        }
        return result
    }

    func ranges(of string: String, options: String.CompareOptions = .literal) 
-> [Range<String.Index>] {
        var result: [Range<String.Index>] = []
        var start = startIndex
        while let range = range(of: string, options: options, range: 
start..<endIndex) {
            result.append(range)
            start = range.upperBound
        }
        return result
    }

}


Source is not mine, I’ve found here: 
http://stackoverflow.com/a/32306142/4550651 
<http://stackoverflow.com/a/32306142/4550651>

Carlos García
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to