Adrian
Adrian

Reputation: 16715

Using a switch statement to construct a Regular Expression in Swift 3

I've created a function that generates a RegularExpression in Swift 3.0. I'm close to what I want, but the backslash is causing me a lot of trouble.

I've looked at Swift Documentation and I thought changing the "\" to \u{005C} or u{005C} would resolve the issue, but it doesn't.

Here's the array I'm feeding my regex generation function:

var letterArray = ["a","","a","","","","","","",""]

Here's the relevant portion of my method:

var outputString = String()

// getMinimumWordLength returns 3
let minimumWordLength = getMinimumWordLength(letterArray: letterArray)
// for the array above, maximumWordLength returns 10
let maximumWordLength = letterArray.count

var index = 0

for letter in letterArray {
    if index < minimumWordLength {
        if letter as! String != "" {
            outputString = outputString + letter.lowercased
        } else {
            // this puts an extra \ in my regex
            outputString = outputString + "\\w" // first \ is an escape character, 2nd one gets read
            // this puts an extra backslash in, too
            // outputString = outputString + "\u{005C}w"
        }
    }
    index += 1
}

outputString = outputString + ("{\(minimumWordLength),\(maximumWordLength)}$/")

return outputString

My desired output is:

a\wa{3,10}$/

My actual output is:

a\\wa{3,10}$/

If anyone has suggestions what I'm fouling up, I welcome them. Thank you for reading.

Upvotes: 0

Views: 340

Answers (1)

Lumialxk
Lumialxk

Reputation: 6369

When string is printed in debugger, escape character will be displayed. When it is displayed for user, it will not. enter image description here

Upvotes: 1

Related Questions