我想使用某个类(NSURL或类似的)构建电子邮件URL 但是我不希望解析字符串的开销。我希望能够指定方案(在这种情况下为mailto
)和地址(在这种情况下为someone@somewhere.com
。)
我试过这段代码:
NSString *address = @"someone@somewhere.com";
NSString *scheme = @"mailto";
NSURL *url = [[NSURL alloc] initWithScheme:scheme host:address path:@"/"];
NSLog(@"test2: %@", [url absoluteString]);
但输出:
mailto://someone@somewhere.com/
甚至不是有效的电子邮件网址。
我有什么选择?
P.S。请不要建议使用NSDataDetector,因为它比通常的字符串解析更昂贵。
答案 0 :(得分:2)
假设您确实拥有纯粹的电子邮件地址而没有其他用具,解决方案很简单:
- (NSURL *)mailtoURLWithEmailAddress:(NSString *)address;
{
address = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *result = [NSURL URLWithString:[@"mailto:" stringByAppendingString:address]];
return result;
}
如果某人有可能指定ASCII字符之外的地址,或者包含一个保留的URL字符,则添加百分比转义非常重要。
要获得更强大的解决方案,请参阅我的KSFileUtilities存储库中的KSMailtoURLs
。它补充说: