我在拔出电子邮件域时遇到了麻烦。 我试过使用

1
u, _ := url.Parse(email)

和标准库中的其他解析,但似乎没有解析的内容:user@gmail.com分成单独的部分。

我也尝试过net.SplitHostPort,但是没有运气。

我不想创建一个函数,该函数在可能的情况下获取len和@符号后的子字符串。

有人有任何想法吗?

谢谢!

  • 电子邮件地址既不是URL,也不是主机+端口。 为什么不只拆分@字符?
  • golang.org/pkg/net/mail/#example_ParseAddress
  • @MohamedNuur我看到了,但是希望在此示例中拆分e.Address
  • 我可以在@JimB上拆分@并仅获取剩余的字符串吗? 我的计划现在是@的len,然后发送email [length:full_length]这将是几行,如果有更好的解决方案,我就不想这样做
  • @ jj1111就像@JimB所说的那样,只需使自己的函数按@字符分割即可。 我不认为这里有任何图书馆,因为人们通常不解析电子邮件。

这是我从golang文档中炮制的一个示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
   "fmt"
   "strings"
)

func main() {
    email :="foo@bar.com"
    components := strings.Split(email,"@")
    username, domain := components[0], components[1]

    fmt.Printf("Username: %s, Domain: %s\
", username, domain)
}
  • Nurr您可以添加到所使用文档的链接吗?
  • 我非常怀疑您是否会在现实生活中遇到这种情况,但是按照笔者的说法,这个答案是不正确的。 有效电子邮件地址的规范允许在电子邮件地址中使用多个" @"符号。 您要使用最后一个而不是第一个作为域部分。 stackoverflow.com/a/12355882/329700
  • 看一下netmail软件包,它显示了将电子邮件分为几部分的正确方法