Функция strings.SplitAfter
Функция strings.SplitAfter разделяет исходную строку на подстроки по указанному разделителю. В отличие от strings.Split, данная функция сохраняет разделитель в конце каждой полученной подстроки. Первым параметром функция принимает строку для разделения, вторым - строку-разделитель. Функция возвращает срез строк.
Синтаксис
strings.SplitAfter(str, sep)
Пример
Давайте разделим строку "a,b,c,d,e" по разделителю "," с сохранением разделителя:
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.SplitAfter("a,b,c,d,e", ",")
fmt.Println(res)
}
Результат выполнения кода:
[a, b, c, d, e]
Обратите внимание, что каждый элемент среза заканчивается запятой, которая является разделителем.
Пример
Разделим строку "123.456.789" по разделителю ".":
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.SplitAfter("123.456.789", ".")
fmt.Println(res)
}
Результат выполнения кода:
[123. 456. 789]
Пример
Рассмотрим разделение строки, которая не содержит указанный разделитель:
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.SplitAfter("abcde", "x")
fmt.Println(res)
}
Результат выполнения кода:
[abcde]
Если разделитель не найден, функция возвращает срез с одним элементом - исходной строкой.
Пример
Разделим строку с несколькими подряд идущими разделителями "a,,b,c":
package main
import (
"fmt"
"strings"
)
func main() {
res := strings.SplitAfter("a,,b,c", ",")
fmt.Println(res)
}
Результат выполнения кода:
[a, , b, c]
При наличии нескольких разделителей подряд, пустые строки сохраняются в результирующем срезе.
Смотрите также
-
функцию
strings.Split,
которая разделяет строку без сохранения разделителя -
функцию
strings.SplitAfterN,
которая ограничивает количество получаемых частей -
функцию
strings.SplitN,
которая разделяет строку без сохранения разделителя с ограничением -
функцию
strings.Join,
которая объединяет срез строк в одну строку с разделителем