2008年09月21日

メールアドレスをローカルとドメインに分離する

メールアドレスを入力するのに、「sample@example.com」とあったとすれば、
・sample
・@example.com
に分離すれば、次にまた「○○○@example.com」の人が出てきた場合、後ろのドメイン部分をオートコンプリートできるんじゃない?と考えたわけだ。
最近のファイルメーカーはフィールド設定で「入力済みの値を利用してオートコンプリート」というオプションを選べるんだけど、日本語の場合は確定しないとこれが動かない。
「日本太郎」と入力したいのに

「日」
「日本」
「日本太」

などと一文字変換しては確定して、オートコンプリートできるかどうか待つというのも馬鹿な話で、あんまり実用的じゃない。
でもメールアドレスなら、確実に半角英数字である。変換しなくていい。
それなら、オートコンプリートも実用的だ。

ということで住所録のメールアドレスは前と後ろで入力を分けて、後で「前&後ろ」みたいな計算フィールドを作ればいいじゃないと考えた。
しかしこれまで蓄積してきたレコードは、普通に「sample@example.com」の形で入力済である。
そこで、こいつらを分離するのはどうしたらいいか。

最初考えたのが、次の計算式。
元々のメールアドレスが蓄積されているフィールドが「メール」という名前だと思ってください。

ローカル部分を抽出する計算フィールド:
Middle ( メール ; 1 ; Position ( メール ; "@" ; 1 ; 1 ) - 1 )

ドメイン部分を抽出する計算フィールド:
Substitute ( メール ; アドレス前方抽出 ; "" )

これでいいじゃん、と思った。最初は。
前方部分は「@」までのテキストを抽出し、後方部分は元のアドレスデータの、前方部分を空白で置換する。
ところがこれ、「sample@sample.com」みたいなアドレスだとダメでした。ドメイン部分が「@.com」になっちゃう。
つまりローカルが「sample」だから、全部とっぱらっちゃうんだね。

そこで改良して、

ドメイン部分を抽出する計算フィールド:
Right ( メール ; Length ( メール ) - Length ( アドレス前方抽出 ) )

にしました。元のアドレスの文字数を出して、単純にローカル部分の文字数を差し引いた分、アドレスの右から抽出する。
何か問題あるかもしれないけど、とりあえず今日はそんな感じ。
タグ:filemaker
posted by tk219 at 23:07 | Comment(0) | ファイルメーカー | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。