1

いくつかのクラス(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/

これは有効なメールURLでもありません。

私のオプションは何ですか?

ps通常の種類の文字列解析よりもさらにコストがかかるため、NSDataDetectorの使用を提案しないでください。

4

1 に答える 1

2

あなたが純粋に電子メールアドレスを持っていて、他の道具を持っていないと仮定すると、解決策は簡単です:

- (NSURL *)mailtoURLWithEmailAddress:(NSString *)address;
{
  address = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  NSURL *result = [NSURL URLWithString:[@"mailto:" stringByAppendingString:address]];
  return result;
}

誰かがASCII文字以外のアドレスを指定したり、予約されたURL文字の1つを含めたりする可能性がある場合は、パーセントエスケープを追加することが重要です。

より有能なソリューションについてKSMailtoURLsは、私のKSFileUtilitiesリポジトリを参照してください。追加:

  • 受信者の名前と住所を含む文字列の処理
  • メールの件名などのエンコード。
于 2013-04-09T13:18:19.773 に答える