メールアドレスを抜く(文字列)


どうも僕です。  2004-04-15 16:43:48  No: 112853  IP: [192.*.*.*]

text1に文章を貼り付けます!その中から、メールアドレスを抜いて、text2にメールアドレスのみを取り出すプログラムを作ろうとしています。

文字列から、  @の前半の部分、後半の部分を抜いて
それぞれつなげようかと思っていますが、本3冊見ましたが、作れません。

簡単に教えてください。
うまく説明出来ませんがよろしくどうぞ。

編集 削除
ちゃん  2004-04-15 17:20:04  No: 112854  IP: [192.*.*.*]

例えば、(アドレス、ドメインは適当ですが)

"a bc def g hij@klm.nop.qr st uvw xyz"

というような文字列から

"hij@klm.nop.qr"

を取得したいということ?

編集 削除
nanashi  2004-04-15 17:25:18  No: 112855  IP: [192.*.*.*]

まず、メールアドレスとして有効な文字がどんなものであるか調べてください。
@以前の有効な文字列を一字ずつ取り出し、
続いて@以降の有効な文字列を一時ずつ取り出せば良いかと思います。

編集 削除
どうも僕です。  2004-04-15 17:31:40  No: 112856  IP: [192.*.*.*]

>例えば、(アドレス、ドメインは適当ですが)
>"a bc def g hij@klm.nop.qr st uvw xyz"
>というような文字列から
>"hij@klm.nop.qr"
>を取得したいということ?

はい、そういう事です!出来ますでしょうか?

編集 削除
GOD  2004-04-15 17:42:21  No: 112857  IP: [192.*.*.*]

> はい、そういう事です!出来ますでしょうか?
InStr関数で@を検索してHITした前後をMid関数で1文字づつ切り出していき、
メールアドレスとして適切か判断して文字列を連結してあげればできそうです。

編集 削除
どうも僕です。  2004-04-15 18:46:48  No: 112858  IP: [192.*.*.*]

>InStr関数で@を検索してHITした前後をMid関数で1文字づつ切り出していき、
>メールアドレスとして適切か判断して文字列を連結してあげればできそうです。

本でそんな感じで出来るのかな〜とは見たのですが、instrとmidをそういう
感じで使う方法が記載されていなかったので、悩んでおります@@;

もしよろしければ簡単なサンプルコードをよろしくお願いいたします。

編集 削除
ねろ  2004-04-15 21:27:18  No: 112859  IP: [192.*.*.*]

このままでは使えませんが簡単な例です。
メールアドレスが無い場合、テキスト文が
メールアドレスで始まっている場合、
テキスト文がメールアドレスで終わっている場合
等は全てエラーになります。
後はご自分で。

Dim s As String, t1, t2, t3
s = "a bc def g hij@klm.nop.qr st uvw xyz"
s = Replace(s, "  ", " ") '全角のスペースを半角に
t1 = InStr(s, "@")
t2 = InStr(t1, s, " ")
t3 = InStrRev(s, " ", t1)
Debug.Print Mid(s, t3 + 1, t2 - t3 - 1)

編集 削除
hoge  2004-04-16 23:19:59  No: 112860  IP: [192.*.*.*]

正規表現を使えば早いのでは?

編集 削除