在 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,我认为将“\”更改为\u005C
或u005C
可以解决问题,但事实并非如此。
这是我提供正则表达式生成函数的数组:
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 语句