пятница, 3 апреля 2020 г.

Три способа разделить строку на срез в Golang

Разделить по запятой или другой подстроке

Используйте функцию strings.Split, чтобы разбить строку на значения, разделенные запятыми.

s := strings.Split("a,b,c", ",")
fmt.Println(s)
// Вывод: [a b c]

Чтобы включить разделители, используйте strings.SplitAfter. Чтобы разделить только первые n значений, используйте strings.SplitN и strings.SplitAfterN.

Вы можете использовать strings.TrimSpace для удаления начальных и конечных пробелов из результирующих строк.

Разделить по пробелам и символам новой строки

Используйте функцию strings.Fields, чтобы разбить строку на подстроки, удаляя любые пробелы, включая символы новой строки.

s := strings.Fields(" a \t b \n")
fmt.Println(s)
// Вывод: [a b]

Разделить по регулярному выражению

В более сложных ситуациях метод regexp Split может помочь.

Он разбивает строку на подстроки, разделенные регулярным выражением. Метод принимает целочисленный аргумент n; если n >= 0, он возвращает не более n подстрок.

a := regexp.MustCompile(`a`)              // единичный `a`
fmt.Printf("%q\n", a.Split("banana", -1)) // ["b" "n" "n" ""]
fmt.Printf("%q\n", a.Split("banana", 0))  // [] (nil slice)
fmt.Printf("%q\n", a.Split("banana", 1))  // ["banana"]
fmt.Printf("%q\n", a.Split("banana", 2))  // ["b" "nana"]

zp := regexp.MustCompile(` *, *`)             // пробелы и одна запятая
fmt.Printf("%q\n", zp.Split("a,b ,  c ", -1)) // ["a" "b" "c "]


Читайте также:


Комментариев нет:

Отправить комментарий