artemkrachulov
7/23/2016 - 9:54 AM

Convert Range<Int> to Range<String.Index> object

Convert Range to Range<String.Index> object

//
//  Range+RangeIntToRangeStringIndex.swift
//
//  Created by Artem Krachulov.
//  Copyright (c) 2016 Artem Krachulov. All rights reserved.
//  Website: http://www.artemkrachulov.com/
//

import UIKit

/// Convert Range<Int> to Range<String.Index> object.
///
/// Usage:
///
///     let str = "Hello World!"
///     let toRangeStringIndex = converRangeIntToRangeStringIndex(str, range: 6..<11) // 6..<11
public func RangeIntToRangeStringIndex(str: String, range: Range<Int>) -> Range<String.Index>? {
  guard range.startIndex <= str.characters.count && range.endIndex <= str.characters.count else {
    return nil
  }
  return Range<String.Index>(str.startIndex.advancedBy(range.startIndex)..<str.startIndex.advancedBy(range.endIndex))
}