VBA正则表达式邮件

时间:2016-11-15 19:18:37

标签: excel vba

我想将一个字符串拆分为3个部分。例如,我有一个像

这样的电子邮件地址
testuser@gamil.com

我希望将其拆分为

testuser 
gamil
.com

左,右和中(str)我只能提取一个字符串,如果是一个固定的长度。 有人有想法吗?

1 个答案:

答案 0 :(得分:0)

  

leftrightmid(str)我只能提取字符串,如果是固定长度的话。

实际上并非如此,因为您还可以使用len函数来获取字符串的长度。

Dim L as Integer
L = Len("testuser@gamil.com")
MsgBox L

您还可以使用Instr(和InstrRev,反向)功能查找特定字符或子字符串的索引。

Dim I as Integer
I = Instr("testuser@gamil.com", "@")

因此,对于您的情况,没有正则表达式的自定义函数将返回三个项目的数组:

Function SplitEmail(email$)
'Function returns an array like:
'  {"username", "domain", "tld"}

Dim Dot As Integer, At As Integer
Dot = InStrRev(email, ".")
At = InStr(email, "@")

Dim ret(1 To 3) As String

ret(1) = Left(email, At - 1)
ret(2) = Mid(email, At + 1, Dot - At - 1)
ret(3) = Mid(email, Dot + 1)

SplitEmail = ret

End Function

要获取用户名部分,您可以执行以下操作:

Dim some_email$
some_email = "testuser@gamil.com"

MsgBox SplitEmail(some_email)(1)