Как обрезать строку в golang до первого вхождения одного из разделителей?
Пусть есть некоторая строка "my.str!" Необходимо извлечь "my."
Ответы (2 шт):
Автор решения: Ainar-G
→ Ссылка
Используйте strings.SplitAfterN:
func f(s string) (prefix string) {
var strs = strings.SplitAfterN(s, ".", 2)
if len(strs) == 1 {
return ""
}
return strs[0]
}
Автор решения: Mark
→ Ссылка
Если вам действительно нужно делать со строкой что-то относительно сложное (а вопрос читается так, что разделителей может быть несколько разных) то вам подойдут регулярные выражения.
В данном примере кроме разделителя . в выражение добавлены разделители , и -.
var r = regexp.MustCompile(`^(.*?[.,-]{1})(.*)`) // регулярное выражение
// нет необходимости парсить регулярное выражение каждый раз при вызове функции
// достаточно объявить статическую переменную
func f(s string) string {
split := r.FindStringSubmatch(s)
if len(split) < 2 {
return ""
}
return split[1]
}
https://play.golang.org/p/h8vk4rlH4Qa
Проверить работу вашей регулярки на Go вы можете здесь.