Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Manipulowanie łańcuchami ma fundamentalne znaczenie w tworzeniu oprogramowania; w końcu większość języków programowania zapewnia typ łańcuchowy. Łańcuch to ciąg znaków: liter, cyfr i symboli.

Manipulowanie łańcuchami jest przydatne w różnych zastosowaniach, od przetwarzania tekstu i analizy danych po tworzenie stron internetowych. Popularnymi operacjami manipulowania łańcuchami są konkatenacja, sprawdzanie poprawności danych, wyodrębnianie i formatowanie. Go udostępnia pakiet do manipulacji łańcuchami o nazwie „strings” w bibliotece standardowej.

Pakiet strun

The smyczki pakiet udostępnia różne przydatne funkcje do manipulowania łańcuchami i innych operacji. Pakiet zawiera funkcje operacji na podciągach, przycinania, porównywania ciągów, konwersji ciągów, budowania ciągów, dzielenia i nie tylko.

Możesz zaimportować pakiet strings, podając nazwę pakietu na liście importów.

instagram viewer
import"smyczki"

Wyszukiwanie podciągów

The smyczki pakiet udostępnia trzy funkcje wyszukiwania podłańcuchów: the Zawiera funkcja, tzw Zawiera dowolne funkcja i Zawiera Runę funkcjonować.

The Zawiera funkcja sprawdza, czy określony ciąg zawiera podłańcuch. The Zawiera dowolne funkcja sprawdza, czy łańcuch zawiera jakieś znaki w podłańcuchu, a funkcja Zawiera Runę funkcja sprawdza, czy łańcuch zawiera runę (znak Unicode).

import (
"fmt"
"smyczki"
)

funkcjagłówny() {
aCiąg := "Witaj świecie!"
podłańcuch := "Świat"
znaki := "aeiou"
aRune := „o”

fmt. Println (stringi. Zawiera (łańcuch, podłańcuch)) // Dane wyjściowe: prawda
fmt. Println (stringi. Zawiera dowolny (ciąg znaków, znaki)) // Dane wyjściowe: prawda
fmt. Println (stringi. ZawieraRune (aCiąg, aRune)) // Dane wyjściowe: prawda
}

Możesz pobrać indeks podciągu za pomocą Indeks, IndeksDowolny, Bajt indeksu, I Funkcja indeksu Funkcje. The Indeks funkcja zwraca indeks podłańcucha, jeśli występuje on w innym podanym ciągu. The IndeksDowolny funkcja zwraca indeks pierwszego wystąpienia punkt kodu Unicode Lub -1 jeśli żaden z znaków nie jest obecny.

import (
"fmt"
"smyczki"
)

funkcjagłówny() {
aCiąg := "Witaj świecie!"
podłańcuch := "świat"
znaki := "świat"
bajtZnak := bajt(„o”)
aRune := runa(„o”)

fmt. Println (stringi. Indeks (łańcuch, podłańcuch)) // Dane wyjściowe: 7
fmt. Println (stringi. IndexAny (ciąg znaków, znaki)) // Dane wyjściowe: 7
fmt. Println (stringi. Bajt indeksu (ciąg znaków, znak bajtu)) // Dane wyjściowe: 4

f := funkcja(R runa)bool {
powrót r == „o”
}

fmt. Println (stringi. IndexFunc (aCiąg, f)) // Dane wyjściowe: 4
fmt. Println (stringi. IndexRune (aCiąg, aRune)) // Dane wyjściowe: 4
}

Bajt indeksu zwraca indeks pierwszego wystąpienia znaku bajtu w łańcuchu or -1. The Funkcja indeksu funkcja zwraca indeks do łańcucha pierwszego punktu Unicode, który spełnia daną funkcję. Wreszcie, IndeksRune funkcja zwraca indeks pierwszego wystąpienia punktu kodu Unicode runy.

Zastępowanie podciągów w Go

The Zastępować I Zamień wszystko funkcja pomoc przy zastępowaniu podłańcuchów. The Zastępować funkcja pobiera ciąg, oryginalny podłańcuch oraz zamiennik i kilka zamienników. The Zamień wszystko funkcja przyjmuje tylko łańcuch, początkowy podłańcuch i zamiennik.

import (
"fmt"
"smyczki"
)

funkcjagłówny() {
Ciąg := „To jest ciąg testowy do modyfikacji”.
fmt. Println (stringi. Zastąp (Ciąg, "Jest", "był", 1))
fmt. Println (stringi. Zastąp (Ciąg, "Jest", "był", -1))
fmt. Println (stringi. Zastąp wszystko (ciąg, "Jest", "był"))
}

Zauważ, że możesz użyć zarówno metody Replace, jak i ReplaceAll, aby zastąpić każde wystąpienie w łańcuchu.

Dzielenie i łączenie ciągów

The smyczki opakowanie zawiera Podział, Podziel po, Podziel po N, I Split N funkcje do dzielenia ciągów, które zwracają wycinek ciągów.

The Podział metoda dzieli się przez określony ogranicznik. Podobny do Podział metoda, tzw Podziel po Metoda dzieli łańcuch, ale zawiera separator w swoich wynikach.

import (
"fmt"
"smyczki"
)

funkcjagłówny() {
s := „To jest ciąg testowy do podzielenia”.

fmt. Println (stringi. Split (s, " "))
fmt. Println (stringi. Podziel po (s, " "))
fmt. Println (stringi. SplitAfterN(s, " ", 3))
fmt. Println (stringi. SplitN(s, " ", 3))
}

The Podziel po N metoda jest podobna do Podziel po z tą różnicą, że funkcja dzieli łańcuch na określoną maksymalną liczbę podciągów. The Split N Metoda dzieli łańcuch na określoną maksymalną liczbę bez uwzględniania separatora w podłańcuchach.

Możesz łączyć ciągi za pomocą Dołączyć funkcja od smyczki pakiet. The Dołączyć funkcja przyjmuje wycinek i ogranicznik.

import (
"fmt"
"smyczki"
)

funkcjagłówny() {
fmt. Println (stringi. Dołączyć([]strunowy{"Cześć", "Świat"}, ":"))
// Dane wyjściowe: „Hello: World”
}

Manipulowanie etui na struny

Manipulowanie wielkością liter jest przydatne przy wielu zadaniach, m.in praca z dokumentacją. Możesz użyć Obniżyć funkcja dla małych liter, the Górna funkcja dla wielkich liter i DoTytułu funkcja dla tytułowej wielkości liter.

import (
"fmt"
"smyczki"
)

funkcjagłówny() {
s := „To jest ciąg testowy”.

fmt. Println (stringi. ToLower (s)) // to jest ciąg testowy.
fmt. Println (stringi. Górna górna (s)) // TO JEST ŁAŃCUCH TESTOWY.
fmt. Println (stringi. DoTitle (s)) // TO JEST ŁAŃCUCH TESTOWY.
}

Budowanie strun w Go

Konstruktorzy ciągów to typ, który pozwala na wydajne łączenie w Go. The bajty. Bufor type jest jednym z powszechnie używanych konstruktorów łańcuchów. The bajty. Bufor implementuje powiększalny bufor bajtów z metodami odczytu i zapisu dla operacji, pozwalając na wydajne dołączanie łańcuchów bez konieczności tworzenia nowych kopii, w przeciwieństwie do + operacja i Dołączyć funkcjonować.

import (
"fmt"
"smyczki"
)

funkcjagłówny() {
rozm struny b. Budowniczy

// Napisz kilka ciągów do konstruktora
B. WriteString("Ten ")
B. WriteString("Jest ")
B. WriteString("A ")
B. WriteString("próba")
B. WriteString("strunowy.")

// Uzyskaj długość konstruktora
fmt. Println (ur. Len())

// Konwertuj konstruktora na ciąg znaków
str := b. Strunowy()
fmt. Println (str)

// Zresetuj konstruktora
B. Resetowanie()

// Napisz więcej łańcuchów do konstruktora
B. WriteString("Ten ")
B. WriteString("Jest ")
B. WriteString("inny ")
B. WriteString("próba")
B. WriteString("strunowy.")

// Uzyskaj pojemność konstruktora
fmt. Println (ur. Czapka())

// Ponownie skonwertuj konstruktora na ciąg znaków
str = b. Strunowy()
fmt. Println (str)
}

The główny funkcja demonstruje, w jaki sposób można użyć funkcji smyczki. Budowniczy typ dla wydajnego budowania ciągów. The NapiszString metoda tzw Smyczki. Budowniczy type rozszerza sekwencję łańcuchów między sobą, a Len Metoda zwraca długość zbudowanego łańcucha.

The Strunowy Metoda konwertuje zawartość konstruktora na ciąg znaków, a metoda Resetowanie metoda resetuje konstruktora w celu dodatkowego budowania ciągów.

The Czapka Metoda zwraca pojemność konstruktora. To jest bieżące miejsce, które Go przydzieliło dla łańcucha.

Przycinanie strun w Go

The smyczki pakiet zapewnia również funkcjonalność do przycinania ciągów w Przycinać, Przytnij w lewo, TrimPrefix, Przytnij w prawo, PrzytnijPrzestrzeń, I Sufiks wykończenia Funkcje.

import (
"smyczki"
"fmt"
)

funkcjagłówny() {
// cały ciąg
s := "Witaj świecie!"

// element wykończenia
przedrostek := "Cześć"
sufiks := "Świat!"

// przycina łańcuch według określonego zestawu przycinania
fmt. Println (stringi. wykończenia (s, "!"))

// przycina o spacje na początku i na końcu łańcucha
fmt. Println (stringi. PrzytnijPrzestrzeń (s))

// przycina z lewego łańcucha według określonego zestawu przycinania
fmt. Println (stringi. Przytnij w lewo (s, "Cześć"))

// przycina prawy łańcuch o określony zestaw przycinania
fmt. Println (stringi. Przytnij w prawo (s, "Świat!"))

// przycina prefiks
fmt. Println (stringi. TrimPrefix (s, przedrostek))

// przycina określony sufiks
fmt. Println (stringi. TrimSuffix (s, przyrostek))
}

The główny function pokazuje, jak można używać funkcji do przycinania. Różne funkcje przycinają S ciąg na różne sposoby:

Możesz formatować ciągi w Go

Standardowa biblioteka Go zawiera również pakiet fmt do formatowania ciągów znaków. Pakiet fmt używa czasowników formatujących w stylu języka C do efektywnego formatowania ciągów znaków w Go.