Ani Khechoyan Ani Khechoyan -4 years ago 149
Swift Question

Replace string between characters in swift

I have many strings, like this:

'This is a "table". There is an "apple" on the "table".'

I want to replace "table", "apple" and "table" with spaces. Is there a way to do it?

Answer Source

A simple regular expression:

let sentence = "This is \"table\". There is an \"apple\" on the \"table\""

let pattern = "\"[^\"]+\"" //everything between " and "
let replacement = "____"
let newSentence = sentence.replacingOccurrences(
    of: pattern,
    with: replacement,
    options: .regularExpression
)

print(newSentence) // This is ____. There is an ____ on the ____

If you want to keep the same number of characters, then you can iterate over the matches:

let sentence = "This is table. There is \"an\" apple on \"the\" table."    
let regularExpression = try! NSRegularExpression(pattern: "\"[^\"]+\"", options: [])

let matches = regularExpression.matches(
    in: sentence,
    options: [],
    range: NSMakeRange(0, sentence.characters.count)
)

var newSentence = sentence

for match in matches {
    let replacement = Array(repeating: "_", count: match.range.length - 2).joined()
    newSentence = (newSentence as NSString).replacingCharacters(in: match.range, with: "\"" + replacement + "\"")
}

print(newSentence) // This is table. There is "__" apple on "___" table.
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download