text1に文章を貼り付けます!その中から、メールアドレスを抜いて、text2にメールアドレスのみを取り出すプログラムを作ろうとしています。
文字列から、 @の前半の部分、後半の部分を抜いて
それぞれつなげようかと思っていますが、本3冊見ましたが、作れません。
簡単に教えてください。
うまく説明出来ませんがよろしくどうぞ。
例えば、(アドレス、ドメインは適当ですが)
"a bc def g hij@klm.nop.qr st uvw xyz"
というような文字列から
"hij@klm.nop.qr"
を取得したいということ?
まず、メールアドレスとして有効な文字がどんなものであるか調べてください。
@以前の有効な文字列を一字ずつ取り出し、
続いて@以降の有効な文字列を一時ずつ取り出せば良いかと思います。
>例えば、(アドレス、ドメインは適当ですが)
>"a bc def g hij@klm.nop.qr st uvw xyz"
>というような文字列から
>"hij@klm.nop.qr"
>を取得したいということ?
はい、そういう事です!出来ますでしょうか?
> はい、そういう事です!出来ますでしょうか?
InStr関数で@を検索してHITした前後をMid関数で1文字づつ切り出していき、
メールアドレスとして適切か判断して文字列を連結してあげればできそうです。
>InStr関数で@を検索してHITした前後をMid関数で1文字づつ切り出していき、
>メールアドレスとして適切か判断して文字列を連結してあげればできそうです。
本でそんな感じで出来るのかな〜とは見たのですが、instrとmidをそういう
感じで使う方法が記載されていなかったので、悩んでおります@@;
もしよろしければ簡単なサンプルコードをよろしくお願いいたします。
このままでは使えませんが簡単な例です。
メールアドレスが無い場合、テキスト文が
メールアドレスで始まっている場合、
テキスト文がメールアドレスで終わっている場合
等は全てエラーになります。
後はご自分で。
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)
正規表現を使えば早いのでは?
編集 削除