使用Swift来取消unicode字符,即 u1234

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Swift来取消unicode字符,即 u1234相关的知识,希望对你有一定的参考价值。

在使用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!
答案

它在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: 各個都

(最后一个参数引发了我的循环,直到我意识到Swift中的Boolean是UInt的类型别名 - 对于这些类型的方法,Objective-C中的YES在Swift中变为1。)

另一答案

斯威夫特3

let transform = "Any-Hex/Java"
let input = "\u5404\u500b\u90fd" as NSString
var convertedString = input.mutableCopy() as! NSMutableString

CFStringTransform(convertedString, nil, transform as NSString, true)

print("convertedString: (convertedString)")
// convertedString: 各個都
另一答案

Swift 4 String扩展

extension String {
    var unescapingUnicodeCharacters: String {       
        let mutableString = NSMutableString(string: self)
        CFStringTransform(mutableString, nil, "Any-Hex/Java" as NSString, true)

        return mutableString as String
    }
}

以上是关于使用Swift来取消unicode字符,即 u1234的主要内容,如果未能解决你的问题,请参考以下文章

如何在具有可变宽度 Unicode 字符的 Swift 字符串上使用 NSRegularExpression?

JSON字符串上的Unicode字符与swift 3和Alamofire

如何在 Swift 中打印 Unicode 字符

如何在python中取消引用urlencoded unicode字符串?

字符串文字中的 Swift 特殊 Unicode 字符

TXT文档里有Unicode字符导致打开时为乱码怎么办啊?