我有一个像这样的字符串:
let muString = "\n\nFebruary 11, 2012\n\nThis natural-color image showing Acme Inc\'s logo... bla bla bla “Mount Everest”... bla bla 'Black Viper' ... bla bla. \"Naja\""
换句话说,我有智能引号
````````````
(注意:SO 没有正确渲染前面的字符。我的意思是它们正在打开和关闭卷曲单引号和双引号)。
还有双引号,我想用一个纯 ASCII 引号替换所有内容。
我创建了这个扩展:
extension String {
func plainText() -> String {
var newString = self.replacingOccurrences(of: "\u{0060}", with: "'")
newString = self.replacingOccurrences(of: "\u{00b4}", with: "'")
newString = self.replacingOccurrences(of: "\u{2018}", with: "'")
newString = self.replacingOccurrences(of: "\u{2019}", with: "'")
newString = self.replacingOccurrences(of: "\u{201c}", with: "'")
newString = self.replacingOccurrences(of: "\u{201d}", with: "'")
newString = self.replacingOccurrences(of: "\"", with: "'")
return newString
}
}
但做
print (myString.plainText())
给了我和独自一人一样的感觉myString
。
换句话说,扩展程序不会清除任何内容。
有任何想法吗?
所以
replacingOccurrences
返回一个新的字符串。self
在函数内部调用它意味着您始终在原始字符串本身上调用它。这意味着只有您最后一次调用replacingOccurrences
才被实际使用。您应该始终在 on 上调用它replacingOccurrences
,而不是self
总是在 on 上调用它newString
:或者你可以直接链接调用,这样更干净。