2016-11-01 4 views
1

У меня есть несколько строк в строках, например:Swift заменить полную строку в строках

let str = "Mieter: Hannes Tester \nVerwalter: Michael Karner \n" 

Теперь я хочу, чтобы удалить все предложение между «Mieter» и разрывом строки. Таким образом, результат должен быть:

let str = "Verwalter: Michael Karner \n" 

Я могу проверить с помощью Regex, но я могу получить строку между двумя словами. Например, с:

if let match = str.rangeOfString("(?<=Mieter)[^\n]+", options: .RegularExpressionSearch) { 
    print(str.substringWithRange(match)) // between 
} 

Но как я могу заменить целую линию?

Edit:

Он больше не работает, когда его между строкой:

let str = "Test \n Mieter: \n Hausverwalter: \n Firma: \n" 

str.stringByReplacingOccurrencesOfString("^Mieter[^\n]+\\s", withString: "", options: .RegularExpressionSearch, range: nil) 

// so "Mieter \n" is not being replaced. 

ответ

2

Использование replacingOccurrencesOf

let str = "Mieter: Hannes Tester \nVerwalter: Michael Karner \n" 
str.replacingOccurrences(of: "^Mieter[^\n]+\\s", with: "", options: .regularExpression) 

Это Swift 3 код

Редактировать :

Если подстрока не находится в начале строки, удалите ведущую каретку (^).

+0

Спасибо. У вас есть это для Swift 2.3? Его не: str.stringByReplacingOccurrencesOfString ("^ Mieter [^ \ n] + \\ s", withString: "") – derdida

+0

ОК нашел это: str.stringByReplacingOccurrencesOfString ("^ Mieter [^ \ n] + \\ s", withString : "", options: .RegularExpressionSearch, range: nil) – derdida

+0

Пожалуйста, используйте завершение кода, 'stringByReplacing ...', вероятно, правильно. – vadian

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