swift 转义反斜杠没有按预期工作
swift escaping backslash doesn't work as expected
当我打印这个时:
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
}
}
您实际上是在打印数组内的所有内容,这将向您显示 debugDescription
变量,这就是您看到双斜杠的原因。它打印的是字符串的字面值,而不是您想要的内插值。
如果你想要数组中的特定项目,你需要通过遍历它来寻址其中的项目,或者寻址某个索引。
这是您的代码,显示的是描述:
import Foundation
let toPurge = [(8767514,[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(re)
}
print(regex[0]) // correct
print(regex) // prints debugDescription
print(regex.debugDescription) // prints debugDescription
for r in regex {
print(r) // looks perfect
}
}
当我打印这个时:
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
}
}
您实际上是在打印数组内的所有内容,这将向您显示 debugDescription
变量,这就是您看到双斜杠的原因。它打印的是字符串的字面值,而不是您想要的内插值。
如果你想要数组中的特定项目,你需要通过遍历它来寻址其中的项目,或者寻址某个索引。
这是您的代码,显示的是描述:
import Foundation
let toPurge = [(8767514,[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(re)
}
print(regex[0]) // correct
print(regex) // prints debugDescription
print(regex.debugDescription) // prints debugDescription
for r in regex {
print(r) // looks perfect
}
}