如何扩展 Swift 中的字符串 NSRange?

How to extend a string NSRange in Swift?

我在 Swift 中有一个字符串范围,但我想将它扩展几个字符,但我不知道如何执行此操作。

这是我的代码:

var fullMessage = "This\n is\n my example\n message.\n Thanks Leigh Smith\n and some more characters\n and lots more \n"
var startName = fullMessage.rangeOfString("Leigh")
var endMessage = fullMessage[advance(startName!.endIndex,0)...advance(fullMessage.endIndex,-1)]

var posRange = endMessage.rangeOfString("\n")
var pos = posRange?.startIndex
var xpos = advance(startName!.endIndex, 0)

fullMessage = fullMessage[advance(fullMessage.startIndex, 0)...advance(startName!.endIndex,advance(pos, 0))]

我的问题是 fullMessage 可能包含随机数 \n。我想从 fullMessage 字符串的开头获取字符串,直到 "Leigh" 之后的 \n 即 "This\n is\n my example\n message.\n Thanks Leigh Smith\n".

我的想法是找到下一个“\n”,然后扩大原来的范围。希望有一种简单的方法可以用更好的代码来做到这一点。

谢谢

澳门

import Foundation

let fullMessage = "This\n is\n my example\n message.\n Thanks Leigh Smith\n and some more characters\n and lots more \n"

extension String {
  func sliceAfter(after: String, to: String) -> String {
    return rangeOfString(after).flatMap {
      rangeOfString(to, range: [=10=].endIndex..<endIndex).map {
        substringToIndex([=10=].endIndex)
      }
    } ?? self
  }
}

fullMessage.sliceAfter("Leigh", to: "\n") // "This\n is\n my example\n message.\n Thanks Leigh Smith\n"