如何从Swift中的字符串中删除"\ U0000fffc"?

Ran*_*ens 2 string swift

我已将图像添加到文本字段,并希望再次将其删除.我试过以下两行无济于事?

string = string.stringByReplacingOccurrencesOfString("\\U0000fffc", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
string = string.stringByReplacingOccurrencesOfString("\U0000fffc", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助,非常感谢!

Mar*_*n R 7

Swift中的Unicode转义序列与Objective-C中的转义序列不同,Unicode字符U+FFFC转义为\u{fffc}:

这是你的字符串:

var string = "Hello\n\n\u{fffc}"
println(string.dataUsingEncoding(NSUTF32BigEndianStringEncoding)!)
// <00000048 00000065 0000006c 0000006c 0000006f 0000000a 0000000a 0000fffc>
Run Code Online (Sandbox Code Playgroud)

现在删除所有U+FFFC字符:

string = string.stringByReplacingOccurrencesOfString("\u{fffc}", withString: "")
println(string.dataUsingEncoding(NSUTF32BigEndianStringEncoding)!)
// <00000048 00000065 0000006c 0000006c 0000006f 0000000a 0000000a>
Run Code Online (Sandbox Code Playgroud)

需要注意的是options:range:是可选的参数,而不是在这种情况下需要.


Swift 3/4更新:

var string = "Hello\n\n\u{fffc}"
print(string.data(using: .utf32BigEndian)! as NSData)
// <00000048 00000065 0000006c 0000006c 0000006f 0000000a 0000000a 0000fffc>
Run Code Online (Sandbox Code Playgroud)

string = string.replacingOccurrences(of: "\u{fffc}", with: "")
print(string.data(using: .utf32BigEndian)! as NSData)
// <00000048 00000065 0000006c 0000006c 0000006f 0000000a 0000000a>
Run Code Online (Sandbox Code Playgroud)