【问题标题】:Using a switch statement to construct a Regular Expression in Swift 3在 Swift 3 中使用 switch 语句构造正则表达式
【发布时间】:2016-07-09 05:55:35
【问题描述】:

我在 Swift 3.0 中创建了一个生成 RegularExpression 的函数。我已经接近我想要的了,但是 反斜杠 给我带来了很多麻烦。

我查看了Swift Documentation,我认为将“\”更改为\u{005C}u{005C} 可以解决问题,但事实并非如此。

这是我提供正则表达式生成函数的数组:

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

这是我方法的相关部分:

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

我想要的输出是:

a\wa{3,10}$/

我的实际输出是:

a\\wa{3,10}$/

如果有人对我的错误提出建议,我欢迎他们。感谢您的阅读。

【问题讨论】:

  • 我不知道您要做什么,但您的代码提供了所需的输出。我唯一做的是在lowercased之后添加圆括号:outputString = outputString + letter.lowercased()
  • 添加print(outputString) 看看你会得到什么。 (我需要 Code Different 所示的修复程序。)

标签: ios regex xcode swift swift3


【解决方案1】:

在调试器中打印字符串时,将显示转义字符。当它显示给用户时,它不会。

【讨论】:

  • 呃!我知道这很简单,但是天哪!谢谢!我目前正在调试并且没有使用打印语句 b/c 它正在通过 bajillion 记录。
猜你喜欢
  • 2011-05-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多