Удалить строку после второго "-" - PullRequest
0 голосов
/ 21 марта 2019

В настоящее время у меня есть строка, основанная на заголовках новостей, и в конце есть - с источником, который я не хочу.Пример: «Ниже, когда Уолл-стрит ожидает решения ФРС по ставкам, раковины FedEx - TheStreet.com»

В настоящее время, чтобы избавиться от него, я использую:

if let range = str.range(of: "-"){
      str.removeSubrange(range.lowerBound..<str.endIndex)}

Однако я столкнулсяпроблема в том, что, если есть 2 "-", вся строка после первой обрезается.

Например, "Сток - ниже, поскольку Уолл-стрит ожидает решения ФРС по ставкам, FedEx Sinks - TheStreet.com "станет" Фондовым "

Мой вопрос: как мне сделать так, чтобы в подстроке было удалено только окончание - и после?

Ответы [ 2 ]

2 голосов
/ 21 марта 2019

Вы можете использовать метод коллекции lastIndex, чтобы узнать последнее вхождение символа тире:

var str =  "Stock - Lower as Wall Street Awaits Fed's Decision on Rates, FedEx Sinks - TheStreet.com"

if let index = str.lastIndex(where: {$0 == "-"}) {
    str.removeSubrange(index...)
}

print(str) // "Stock - Lower as Wall Street Awaits Fed's Decision on Rates, FedEx Sinks "

Вы также можете использовать range(of: String) параметр .backwards параметр:

if let range = str.range(of: " - ", options: .backwards) {
    str.removeSubrange(range.lowerBound...)  
}

print(str)   // "Stock - Lower as Wall Street Awaits Fed's Decision on Rates, FedEx Sinks"
1 голос
/ 21 марта 2019

Попробуйте код:

extension String {
    mutating func removeFromLast(_ ch: Character) {
        if let index = lastIndex(of: ch) {
            removeSubrange(index..<endIndex)
        }
    }
}
var s = "Stock - Lower as Wall Street Awaits Fed's Decision on Rates, FedEx Sinks - TheStreet.com"
s.removeFromLast("-")
print(s)
// "Stock - Lower as Wall Street Awaits Fed's Decision on Rates, FedEx Sinks "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...