【发布时间】:2022-11-02 01:39:32
【问题描述】:
import "fmt"
func main() {
email := "learning@gmail.com"
atTrue := false
s := ""
for i := 0; i < len(email); i++ {
if atTrue {
s += string(email[i])
}
if string(email[i]) == "@" {
atTrue = true
}
}
fmt.Println(s)
}
当前输出:gmail.com
期望输出:域:gmail 和 TLD:com
如何指示从某个字符串到某个字符串的循环?
【问题讨论】:
-
最好使用已经知道如何正确解析电子邮件地址的库,而不是尝试重新发明轮子。顺便说一句,您应该避免在循环中附加到字符串,因为它对性能不利(尤其是如果输入是由潜在的恶意用户提供的)。见
strings.Builder。 -
不过,这个问题还不清楚。您是否尝试从电子邮件地址的域中提取 eTLD?
-
如果是这样,那么您的小巷里就有一个
golang.org/x/net.publicsuffixpackage。唯一的缺点是它不经常更新,并且不能跟上公共后缀列表中的变化。 go.dev/play/p/ry8sONLNI1Q
标签: go