sharplet/Regex

'advanced(by:)' is unavailable (Swift 4)

Closed this issue · 2 comments

wspl commented

In MatchResult.swift 103~108:

  private func utf16Range(from range: NSRange) -> Range<String.UTF16Index>? {
    guard range.location != NSNotFound else { return nil }
    let start = string.startIndex.advanced(by: range.location)
    let end = start.advanced(by: range.length)
    return start..<end
  }

106:21:
'advanced(by:)' is unavailable
'advanced(by:)' was obsoleted in Swift 4.0

wspl commented

Solution:

  private func utf16Range(from range: NSRange) -> Range<String.UTF16Index>? {
    guard range.location != NSNotFound else { return nil }
    let start = string.index(string.startIndex, offsetBy: range.location)
    let end = string.index(start, offsetBy: range.length)
    return start..<end
  }

It works well for me.

Fixed by #57.