Swift: How to get substring from start to last index of character

前端 未结 22 802
感情败类
感情败类 2020-11-30 19:09

I want to learn the best/simplest way to turn a string into another string but with only a subset, starting at the beginning and going to the last index of a character.

22条回答
  •  抹茶落季
    2020-11-30 19:39

    Here's how I do it. You could do it the same way, or use this code for ideas.

    let s = "www.stackoverflow.com"
    s.substringWithRange(0..

    Here are the extensions I use:

    import Foundation
    extension String {
    
      var length: Int {
        get {
          return countElements(self)
        }
      }
    
      func indexOf(target: String) -> Int {
        var range = self.rangeOfString(target)
        if let range = range {
          return distance(self.startIndex, range.startIndex)
        } else {
          return -1
        }
      }
    
      func indexOf(target: String, startIndex: Int) -> Int {
        var startRange = advance(self.startIndex, startIndex)        
        var range = self.rangeOfString(target, options: NSStringCompareOptions.LiteralSearch, range: Range(start: startRange, end: self.endIndex))
        if let range = range {
          return distance(self.startIndex, range.startIndex)
        } else {
          return -1
        }
      }
    
      func lastIndexOf(target: String) -> Int {
        var index = -1
        var stepIndex = self.indexOf(target)
        while stepIndex > -1 {
          index = stepIndex
          if stepIndex + target.length < self.length {
            stepIndex = indexOf(target, startIndex: stepIndex + target.length)
          } else {
            stepIndex = -1
          }
        }
        return index
      } 
    
      func substringWithRange(range:Range) -> String {
        let start = advance(self.startIndex, range.startIndex)
        let end = advance(self.startIndex, range.endIndex)
        return self.substringWithRange(start..

    Credit albertbori / Common Swift String Extensions

    Generally I am a strong proponent of extensions, especially for needs like string manipulation, searching, and slicing.

提交回复
热议问题