2015-07-15 5 views
0

У меня есть строка в Swift, но я хочу продлить ее на несколько символов, но я не вижу, как это сделать.Как расширить строку NSRange в 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 может содержать случайные числа \ п. Я хочу получить строку с начала строки fullMessage до тех пор, пока \ n после «Leigh» i.e. «Это \ n является \ n моим примером \ n сообщение. \ N Спасибо Leigh Smith \ n".

Мои мысли заключались в том, чтобы найти следующий «\ n», а затем расширить исходный диапазон. Надеюсь, есть простой способ сделать это с гораздо более приятным кодом.

Благодаря

macaaw

+0

Я хотел бы выбрать [Регулярное выражение и спички экстракцию] (http://stackoverflow.com/a/27880748/581190). – robertvojta

ответ

1
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: $0.endIndex..<endIndex).map { 
     substringToIndex($0.endIndex) 
     } 
    } ?? self 
    } 
} 

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

Спасибо. Я не утверждаю, что понимаю это, но он, похоже, работает хорошо и был гораздо более кратким, чем версия, которую я наконец придумал. Вы, очевидно, стремительный ниндзя! – iphaaw

 Смежные вопросы

  • Нет связанных вопросов^_^