Расщепление строки перед символом - PullRequest
2 голосов
/ 18 марта 2019

Я новичок в работе и использую сплит в своих интересах.Недавно я столкнулся с проблемой, которую хотел разделить, и оставить разделительный символ во втором слое вместо того, чтобы удалить его, или оставить его в первом слайсе, как в SplitAfter.

Например, следующий код:

strings.Split("email@email.com", "@")

возвращено: ["email", "email.com"]

strings.SplitAfter("email@email.com", "@")

возвращено: ["email@", "email.com"]

Какой лучший способ получить ["email", "@email.com"]?

Ответы [ 2 ]

3 голосов
/ 18 марта 2019

Используйте strings.Index , чтобы найти @ и фрагмент, чтобы получить две части:

var part1, part2 string
if i := strings.Index(s, "@"); i >= 0 {
    part1, part2 = s[:i], s[i:]
} else {
    // handle case with no @
}

Запустите его на детской площадке .

0 голосов
/ 18 марта 2019

Может ли это сработать для вас?

s := strings.Split("email@email.com", "@")
address, domain := s[0], "@"+s[1]
fmt.Println(address, domain)
// email @email.com

Затем прочесать и создать строку

var buffer bytes.Buffer
buffer.WriteString(address)
buffer.WriteString(domain)
result := buffer.String()
fmt.Println(result)
// email@email.com
...