extension String {
var unescaped: String {
let entities = ["\0", "\t", "\n", "\r", "\"", "\'", "\\"]
var current = self
for entity in entities {
let descriptionCharacters = entity.debugDescription.characters.dropFirst().dropLast()
let description = String(descriptionCharacters)
current = current.replacingOccurrences(of: description, with: entity)
}
return current
}
}
let input = "My name is \\n and \\n"
let firstmod = input.stringByReplacingOccurrencesOfString("\\n", withString: "\n", options: [], range: nil)
Input : "My name is \\n and \\n"
Output: "My name is \n and \n"
5条答案
按热度按时间pvcm50d11#
我不认为这是可以自动完成的,但是,因为Swift中只有少数转义字符,你可以把它们放入一个数组中,循环遍历它们,然后用未转义的版本替换所有示例。下面是我做的一个String扩展:
要使用它,只需访问属性即可。例如,
将打印
mgdq6dx12#
我改进了@kabiroberai的代码,使其功能更强大,并删除了剩余的单反斜杠。
更新
我发现我以前的代码在某些情况下不能正确地取消转义。
所以,我更新了我的生产代码。下面是我使用的最新代码。我不确定我是否真的需要做这个复杂的过程,但现在它似乎工作得更好了。
cdmah0mi3#
下面是我的转义和未转义字符串
btqmn9zl4#
我觉得这个最简单的方法就是用
stringByReplacingOccurrencesOfString
beq87vna5#
没有一个答案对我有效,以下是对我有效的: