3 回答
TA贡献1799条经验 获得超6个赞
没有内置函数可以进行C unescaping。
你可以欺骗一点,NSPropertyListSerialization因为“旧文本样式”plist支持C转义通过\Uxxxx:
NSString* input = @"ab\"cA\"BC\\u2345\\u0123";
// will cause trouble if you have "abc\\\\uvw"
NSString* esc1 = [input stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
NSString* esc2 = [esc1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
NSString* quoted = [[@"\"" stringByAppendingString:esc2] stringByAppendingString:@"\""];
NSData* data = [quoted dataUsingEncoding:NSUTF8StringEncoding];
NSString* unesc = [NSPropertyListSerialization propertyListFromData:data
mutabilityOption:NSPropertyListImmutable format:NULL
errorDescription:NULL];
assert([unesc isKindOfClass:[NSString class]]);
NSLog(@"Output = %@", unesc);
但请注意,这不是很有效。如果你编写自己的解析器会好得多。(顺便说一句,您是在解码JSON字符串吗?如果是,您可以使用现有的JSON解析器。)
- 3 回答
- 0 关注
- 728 浏览
添加回答
举报