Заменить подстроки в swift? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть такая строка:

let someString = "The (randomcharacters)(someknowncharacters) are playing in the NBA Finals"

Я хочу заменить все между строками The и (some на строку Warriors. Я пытался использовать replaceOcurrence , но это не делает то, что я хочу.

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Вот еще одна попытка использования replaceOccurencesOf

func replace(_ original: String, between firstPart: String, and secondPart: String, with: String ) -> String {
    let pattern = "\(firstPart) .* \(secondPart)"
    let replacement = "\(firstPart) \(with) \(secondPart)"
    return original.replacingOccurrences(of: pattern, with: replacement, options: .regularExpression)
}

Может потребоваться некоторая корректировка в отношении обработки пробела вокруг заменяемого слова.

Пример

let newString = replace("The Raptors are playing in the NBA Finals", between: "The", and: "are", with: "Warriors")
1 голос
/ 04 июня 2019

Использование некоторых «случайных символов» будет означать, что вы, по сути, используете String в качестве (действительно дерьмового) средства для транспортировки нескольких фрагментов данных.Но у нас уже есть способ сделать это с типами данных.

Мы можем создать структуру, которая содержит необходимую информацию для описания игры в баскетбол.Мы можем передавать эти данные по всему нашему приложению с очень легким доступом к его важным компонентам.Только нашему уровню UI нужна строка, поэтому мы всегда генерируем строковое описание этой структуры в самый последний момент, прямо на уровне UI.

struct BasketballTeam {
    var name: String
}

struct BasketballGame: CustomStringConvertible {
    let homeTeam: BasketballTeam
    let awayTeam: BasketballTeam
    let eventName: String

    var description: String {
        return "The \(homeTeam.name) are playing the \(awayTeam.name) in the \(eventName)."
    }
}

let game = BasketballGame(
    homeTeam: BasketballTeam(name: "Toronto Raptors"),
    awayTeam: BasketballTeam(name: "Golden State Warriors"),
    eventName: "NBA Finals"
)
print(game.description) // => The Toronto Raptors are playing the Golden State Warriors in the NBA Finals.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...