objective-c - NSString stringByReplacingPercentEscapesUsingEncoding 不起作用

标签 objective-c nsstring

我需要从 NSString 获取 url 字符串。我执行以下操作:

   NSString * str = [NSString stringWithString:@"i@gmail.com"];

    NSString * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"%@",eStr);

结果是 i@gmail.com。但我需要 i%40gmail.com。用 NSASCIIStringEncoding 替换 NSUTF8StringEncoding 没有帮助。

最佳答案

你用错了方法。这恰恰相反,转换百分比 逃到他们的角色。你可能想使用 stringByAddingPercentEscapesUsingEncoding:.

NSString *str  = @"i@gmail.com";
NSString *eStr =
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

除此之外,@ 字符默认情况下不会转义。然后, 正如上述方法的文档所指出的,您需要使用 CoreFoundation 来实现你想要的。

NSString *str  = @"i@gmail.com";

CFStringRef eStr = CFURLCreateStringByAddingPercentEscapes(
    kCFAllocatorDefault,
    (CFStringRef)str,
    NULL,
    (CFStringRef)@"@",
    kCFStringEncodingUTF8
);

NSLog(@"%@", eStr);

CFRelease(eStr);

请检查documentation了解更多关于所使用的功能和 如何使其满足您的需求。

关于objective-c - NSString stringByReplacingPercentEscapesUsingEncoding 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9774741/

相关文章:

iphone - Objective-C 和 ASIHTTPRequest - 响应字符串问题

ios - CoreData - insertNewObjectForEntityForName 无法设置属性

ios - iPhone - 当旋转动画 > 90 度时 UIImageView 移动

ios - 将 NSString 转换为 NSDate,添加时间

ios - 初始化NSString的长度限制

string - NSString 每个字母都有线条

objective-c - 如何将 'Follow us on facebook' 按钮添加到 iOS 应用程序?

objective-c - TableView 数据在模拟器上不可见

iphone - Core Animation中关键路径的作用是什么?

ios - 无法将 NSData 转换为 NSString