在使用swift在xcode 6中使用JSON时,我遇到了特殊字符的问题
我在Cocoa/objective C中找到了这些代码来解决转换重音的一些问题但却无法在Swift中运行.有关如何使用它的任何建议?......最好的替代建议也很酷......
谢谢
NSString *input = @"\\u5404\\u500b\\u90fd";
NSString *convertedString = [input mutableCopy];
CFStringRef transform = CFSTR("Any-Hex/Java");
CFStringTransform((__bridge CFMutableStringRef)convertedString, NULL, transform, YES);
NSLog(@"convertedString: %@", convertedString);
// prints: ???, tada!
Run Code Online (Sandbox Code Playgroud)
Nat*_*ook 12
它在Swift中非常相似,但你仍然需要使用Foundation字符串类:
let transform = "Any-Hex/Java"
let input = "\\u5404\\u500b\\u90fd" as NSString
var convertedString = input.mutableCopy() as NSMutableString
CFStringTransform(convertedString, nil, transform as NSString, 1)
println("convertedString: \(convertedString)")
// convertedString: ???
Run Code Online (Sandbox Code Playgroud)
(最后一个参数引发了我的循环,直到我意识到Boolean在Swift中是UInt的类型别名 - 对于这些类型的方法,Objective-C中的YES在Swift中变为1.)
快速String扩展:
extension String {
var unescapingUnicodeCharacters: String {
let mutableString = NSMutableString(string: self)
CFStringTransform(mutableString, nil, "Any-Hex/Java" as NSString, true)
return mutableString as String
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
雨燕3
\n\nlet transform = "Any-Hex/Java"\nlet input = "\\\\u5404\\\\u500b\\\\u90fd" as NSString\nvar convertedString = input.mutableCopy() as! NSMutableString\n\nCFStringTransform(convertedString, nil, transform as NSString, true)\n\nprint("convertedString: \\(convertedString)")\n// convertedString: \xe5\x90\x84\xe5\x80\x8b\xe9\x83\xbd\nRun Code Online (Sandbox Code Playgroud)\n