Swift: Как найти замену группы символов в строке, начиная с предварительно определенного символа и заканчивая другим - PullRequest
0 голосов
/ 23 декабря 2019

Я сейчас работаю над проектом и близок к завершению. У меня только одна проблема.

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

Что я хочу сделать, это:

var infoFormat: String = "Hello, I like <ck4icl;alekdinl;dlke>pancakes!"
infoFormat = infoFormat.replacingOccurrences(of: "<" to ">", with: "", options: .literal, range: nil)

print(infoFormat)
// prints "Hello, I like pancakes!"

Есть ли способ достичь этого? Большое спасибо всем, кто пытается помочь.

Ответы [ 3 ]

2 голосов
/ 23 декабря 2019

Это регулярное выражение удаляет все символы от < до >

var infoFormat = "Hello, I like <ck4icl;alekdinl;dlke>pancakes!"
infoFormat = infoFormat.replacingOccurrences(of: "<[^>]+>", with: "", options: .regularExpression)

В шаблоне выполняется поиск <, за которым следует один или несколько символов, которые не являются >, и закрывающий >

0 голосов
/ 23 декабря 2019

Можно попробовать как:

var infoFormat = "Hello, I like <ck4icl;alekdinl;dlke>pancakes!"

    var startIndex = infoFormat.startIndex

    while let from = infoFormat.range(of: "<", range: startIndex..<infoFormat.endIndex)?.lowerBound,
        let to = infoFormat.range(of: ">", range: from..<infoFormat.endIndex)?.upperBound,
        from != to {
            infoFormat.removeSubrange(from..<to)
            startIndex = from
    }

    print(infoFormat)

    /// OR ///

    let parsed = infoFormat.replacingOccurrences(of: "<ck4icl;alekdinl;dlke>", with: "")
    print(parsed)

Примечание: Вы можете использовать replacingOccurrences, если знаете подстроку для удаления, иначе используйте первую.

Вывод:

Здравствуйте, я люблю блины!

Привет, я люблю блины!

Спасибо

0 голосов
/ 23 декабря 2019

Попробуйте это:

    let infoFormat: String = "Hello, I like <ck4icl;alekdinl;dlke>pancakes!"
    let stringFirstIndex = infoFormat.firstIndex(of: "<")
    let firstIndex = infoFormat.index(stringFirstIndex!, offsetBy: 0)
    let stringLastIndex = infoFormat.firstIndex(of: ">")
    let lastIndex = infoFormat.index(stringLastIndex!, offsetBy: 0)
    let finalString = infoFormat.replacingCharacters(in: firstIndex...lastIndex, with: "")
    print(finalString)

Обязательно безопасно разверните опциональную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...