在 Swift 3 中使用 switch 语句构造正则表达式

Posted

技术标签:

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

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

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

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

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 + "\u005Cw"
        
    
    index += 1


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

return outputString

我想要的输出是:

a\wa3,10$/

我的实际输出是:

a\\wa3,10$/

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

【问题讨论】:

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

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

【讨论】:

呃!我知道这很简单,但是天哪!谢谢!我目前正在调试并且没有使用打印语句 b/c 它正在通过 bajillion 记录。

以上是关于在 Swift 3 中使用 switch 语句构造正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中 didSelectRowAt 函数上的 Switch 语句

swift-分支语句

Swift & SpriteKit - 使用 break 的 switch 语句

case语言怎么用

Swift中switch强大的模式匹配

下划线符号是不是会忽略或检查 Swift 中 switch 语句中的无效性?