【发布时间】:2018-07-05 19:03:37
【问题描述】:
当我打印这个时:
print("dfi:.*\\{8766370\\}.*:6582.*")
日志上的结果符合预期:
>>>> dfi:.*\{8766370\}.*:6582.*
但是当我动态构造字符串时,结果看起来不对
let re = "dfi:.*" + "\\" + "{" + "\(section)" + "\\" + "}" + ".*:\(feed).*"
print(re)
>>>> dfi:.*\\{8766370\\}.*:6582.*"
请注意,第二种情况“\”中有一个双斜杠,我不知道为什么。我尝试使用单斜杠或三斜杠,但仍然打印错误。
编辑 - 添加代码:
for (section,feeds) in toPurge {
var regex = [String]()
for feed in feeds {
// dfi:\{(8767514|8769411|8768176)\}.*
let re = "dfi:.*" + "\\" + "{" + "\(section)" + "\\" + "}" + ".*:\(feed).*"
regex.append(re)
}
print(regex) // looks wrong ! bug in xcode?
for r in regex {
print(r) // looks perfect
}
}
【问题讨论】:
-
当我在这里运行你的代码时,我得到了正确的结果:online.swiftplayground.run
-
你确定吗?在 Playground 中,结果列显示两个反斜杠,但控制台打印一个
-
let section = 8766370 let feed = 6582 let re = "dfi:.*" + "\\" + "{" + "\(section)" + "\\" + "}" + ".*:\(feed).*" print(re) -
dfi:.*\{8766370\}.*:6582.*
-
你正在打印一个数组的全部内容,这就是为什么你得到双斜杠(注意括号)你需要打印正则表达式[0]
标签: swift xcode swift-string