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 關注
- 751 瀏覽
添加回答
舉報