Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Манипулирането на низове е основно в разработката на софтуер; в крайна сметка повечето езици за програмиране предоставят тип низ. Низът е поредица от знаци: букви, цифри и символи.

Манипулирането на низове е полезно за различни приложения, от обработка на текст и анализ на данни до уеб разработка. Популярни операции за манипулиране на низове са конкатенация, валидиране на данни, извличане и форматиране. Go предоставя пакет за манипулиране на низове, наречен „низове“ в стандартната библиотека.

Пакетът низове

The струни пакетът предоставя различни полезни функции за манипулиране на низове и други операции. Пакетът включва функционалност за операции с поднизове, изрязване, сравняване на низове, преобразуване на низове, изграждане на низове, разделяне и др.

Можете да импортирате пакета с низове, като посочите името на пакета във вашия списък с импортирания.

instagram viewer
импортиране"струни"

Търсене на поднизове

The струни пакетът предоставя три функции за търсене на поднизове: Съдържа функция, на Съдържа всякакви функция и Съдържа руна функция.

The Съдържа функцията проверява дали посоченият низ съдържа подниза. The Съдържа всякакви функцията проверява дали низът съдържа някакви знаци в подниза и Съдържа руна функцията проверява дали низът съдържа руна (символ от Unicode).

импортиране (
"fmt"
"струни"
)

функосновен() {
aString := "Здравей свят!"
подниз := "Свят"
знаци := "aeiou"
aRune := 'o'

fmt. Println (низове. Съдържа (низ, подниз)) // Изход: вярно
fmt. Println (низове. ContainsAny (низ, знаци)) // Изход: вярно
fmt. Println (низове. Съдържа Rune (низ, aRune)) // Изход: вярно
}

Можете да извлечете индекса на подниз с Индекс, IndexAny, IndexByte, и IndexFunc функции. The Индекс функцията връща индекса на подниз, ако се среща в друг даден низ. The IndexAny функцията връща индекса на първия екземпляр на кодова точка на Unicode или -1 ако не присъства нито един от знаците.

импортиране (
"fmt"
"струни"
)

функосновен() {
aString := "Здравей свят!"
подниз := "свят"
знаци := "свят"
byteCharacter := байт('o')
aRune := руна('o')

fmt. Println (низове. Индекс (низ, подниз)) // Изход: 7
fmt. Println (низове. IndexAny (aString, символи)) // Изход: 7
fmt. Println (низове. IndexByte (aString, byteCharacter)) // Изход: 4

f := функруна)bool {
връщане r == 'o'
}

fmt. Println (низове. IndexFunc (aString, f)) // Изход: 4
fmt. Println (низове. IndexRune (aString, aRune)) // Изход: 4
}

IndexByte връща индекса на първия екземпляр на байтовия знак в низа или -1. The IndexFunc функцията връща индекса в низа на първата Unicode точка, която удовлетворява дадена функция. И накрая, на IndexRune функцията връща индекса на първото копие на Unicode кодовата точка на руната.

Замяна на поднизове в Go

The Сменете и Замени всички функция помощ при замяна на поднизове. The Сменете функцията приема низа, оригиналния подниз и замяната и няколко замени. The Замени всички функцията приема само низа, началния подниз и заместващия.

импортиране (
"fmt"
"струни"
)

функосновен() {
theString := „Това е тестов низ, който трябва да бъде модифициран.“
fmt. Println (низове. Замяна (theString, "е", "беше", 1))
fmt. Println (низове. Замяна (theString, "е", "беше", -1))
fmt. Println (низове. Замени всички (низът, "е", "беше"))
}

Забележете, че можете да използвате както Replace, така и ReplaceAll, за да замените всяко срещане в низа.

Разделяне и свързване на низове

The струни пакетът съдържа Сплит, SplitAfter, SplitAfterN, и РазделянеN функции за разделяне на низове, които връщат част от низовете.

The Сплит методът се разделя по определен разделител. Подобно на Сплит метод, на SplitAfter метод разделя низа, но включва разделителя в своите резултати.

импортиране (
"fmt"
"струни"
)

функосновен() {
s := „Това е тестов низ, който трябва да бъде разделен.“

fmt. Println (низове. Разделяне (s, " "))
fmt. Println (низове. SplitAfter (s, " "))
fmt. Println (низове. SplitAfterN(s, " ", 3))
fmt. Println (низове. Разделяне на N(s, " ", 3))
}

The SplitAfterN методът е подобен на SplitAfter функция, с изключение на това, че функцията разделя низа на определен максимум от поднизове. The РазделянеN метод разделя низа до определен максимален брой, без да включва разделителя в поднизовете.

Можете да съедините низове с Присъединяване функция от струни пакет. The Присъединяване функцията приема срез и разделител.

импортиране (
"fmt"
"струни"
)

функосновен() {
fmt. Println (низове. Присъединяване([]низ{"Здравейте", "Свят"}, ":"))
// Изход: "Hello: World"
}

Манипулиране на регистър на низове

Манипулирането на регистър на низове е удобно за много задачи, включително работа с документация. Можете да използвате Да понижи функция за малки букви, the ToUpper функция за главни букви и ToTitle функция за главни букви в заглавието.

импортиране (
"fmt"
"струни"
)

функосновен() {
s := „Това е тестов низ.“

fmt. Println (низове. ToLower (s)) // това е тестов низ.
fmt. Println (низове. ToUpper (s)) // ТОВА Е ТЕСТОВ НИЗ.
fmt. Println (низове. Към Заглавие(а)) // ТОВА Е ТЕСТОВ НИЗ.
}

Изграждане на низове в Go

Строителите на низове са тип, който позволява ефективно конкатениране в Go. The байтове. Буфер type е един от често използваните създатели на низове. The байтове. Буфер методът прилага нарастващ буфер от байтове с методи за четене и запис за операции, позволяващи ефективно добавяне на низове, без да е необходимо да се правят нови копия, за разлика от + операция и Присъединяване функция.

импортиране (
"fmt"
"струни"
)

функосновен() {
вар b струни. Строител

// Напишете някои низове на строителя
b. WriteString("Това ")
b. WriteString("е")
b. WriteString("а")
b. WriteString("тест ")
b. WriteString("низ".)

// Вземете дължината на строителя
fmt. Println (б. Лен())

// Преобразуване на конструктора в низ
str := b. низ ()
fmt. Println (str)

// Нулиране на строителя
b. Нулиране()

// Напишете още низове на строителя
b. WriteString("Това ")
b. WriteString("е")
b. WriteString("друг ")
b. WriteString("тест ")
b. WriteString("низ".)

// Вземете капацитета на строителя
fmt. Println (б. Шапка с козирка())

// Преобразувайте конструктора отново в низ
str = b. низ ()
fmt. Println (str)
}

The основен функция демонстрира как можете да използвате струни. Строител тип за ефективно изграждане на низове. The WriteString метод на струни. Строител тип разширява последователността от низове един към друг и Лен метод връща дължината на построения низ.

The низ метод преобразува съдържанието на строителя в низ и Нулиране метод нулира конструктора за допълнително изграждане на низ.

The Шапка с козирка метод връща капацитета на строителя. Това е текущото пространство, което Go е отделил за низа.

Подрязване на низове в Go

The струни пакетът също така предоставя функционалност за подрязване на низове в Подстригване, TrimLeft, TrimPrefix, TrimRight, TrimSpace, и TrimSuffix функции.

импортиране (
"струни"
"fmt"
)

функосновен() {
// пълният низ
s := "Здравей свят!"

// елементът за подрязване
префикс := "Здравейте"
наставка := "Свят!"

// изрязва низ по зададен комплект за изрязване
fmt. Println (низове. Подрязване (s, "!"))

// изрязва с интервали в началото и края на низа
fmt. Println (низове. TrimSpace (s))

// изрязване от левия низ чрез определен комплект за изрязване
fmt. Println (низове. TrimLeft (s, "Здравейте"))

// изрязва от десния низ чрез определен комплект за изрязване
fmt. Println (низове. TrimRight (s, "Свят!"))

// изрязва префикс
fmt. Println (низове. TrimPrefix (s, префикс))

// изрязва конкретен суфикс
fmt. Println (низове. TrimSuffix (s, суфикс))
}

The основен демонстрира как можете да използвате функциите за подрязване. Различните функции подрязват с низ по различни начини:

Можете да форматирате низове в Go

Стандартната библиотека Go също така предоставя пакета fmt за форматиране на низове. Пакетът fmt използва глаголи за форматиране в стил C за ефективно форматиране на низове в Go.