Manipulacija nizovima temeljna je u razvoju softvera; većina programskih jezika ipak nudi string tip. Niz je niz znakova: slova, brojeva i simbola.
Manipulacija nizovima je korisna za razne aplikacije, od obrade teksta i analize podataka do web razvoja. Popularne operacije manipulacije nizovima su ulančavanje, provjera valjanosti podataka, izdvajanje i oblikovanje. Go pruža paket za manipulaciju nizovima pod nazivom "nizovi" u standardnoj biblioteci.
Paket žica
The žice paket pruža razne korisne funkcije za manipulaciju nizovima i druge operacije. Paket uključuje funkcionalnost za operacije s podnizovima, skraćivanje, usporedbu nizova, pretvorbu nizova, izgradnju nizova, razdvajanje i još mnogo toga.
Možete uvesti paket nizova tako da navedete naziv paketa na popisu uvoza.
uvoz"žice"
Traženje podnizova
The žice paket nudi tri funkcije za traženje podnizova: Sadrži funkcija, Sadrži bilo što funkcija, i Sadrži Rune funkcija.
The Sadrži funkcija provjerava sadrži li navedeni niz podniz. The Sadrži bilo što funkcija provjerava sadrži li niz neke znakove u podnizu i Sadrži Rune funkcija provjerava sadrži li niz runu (Unicode znak).
uvoz (
"fmt"
"žice"
)funkglavni() {
aString := "Pozdrav svijete!"
podniz := "Svijet"
likovi := "aeiou"
aRune := 'o'
fmt. Println (nizovi. Sadrži (niz, podniz)) // Izlaz: istina
fmt. Println (nizovi. ContainsAny (aString, znakovi)) // Izlaz: istina
fmt. Println (nizovi. Sadrži Runu (String, aRune)) // Izlaz: istina
}
Možete dohvatiti indeks podniza pomoću Indeks, IndexAny, IndexByte, i IndexFunc funkcije. The Indeks funkcija vraća indeks podniza, ako se pojavljuje u drugom zadanom nizu. The IndexAny funkcija vraća indeks prve instance od kodnu točku Unicode ili -1 ako niti jedan od likova nije prisutan.
uvoz (
"fmt"
"žice"
)funkglavni() {
aString := "Pozdrav svijete!"
podniz := "svijet"
znakovi := "svijet"
bajtZnak := bajt('o')
aRune := runa('o')fmt. Println (nizovi. Indeks (niz, podniz)) // Izlaz: 7
fmt. Println (nizovi. IndexAny (niz, znakovi)) // Izlaz: 7
fmt. Println (nizovi. IndexByte (aString, byteCharacter)) // Izlaz: 4
f := funk(r runa)bool {
povratak r == 'o'
}
fmt. Println (nizovi. IndexFunc (aString, f)) // Izlaz: 4
fmt. Println (nizovi. IndexRune (aString, aRune)) // Izlaz: 4
}
IndexByte vraća indeks prve instance bajt znaka u nizu ili -1. The IndexFunc funkcija vraća indeks u nizu prve Unicode točke koja zadovoljava zadanu funkciju. Konačno, IndexRune funkcija vraća indeks prve instance Unicode kodne točke rune.
Zamjena podnizova u Go
The Zamijeniti i Zamjeni sve pomoć funkcije kod zamjene podnizova. The Zamijeniti funkcija uzima niz, izvorni podniz, zamjenu i nekoliko zamjena. The Zamjeni sve funkcija uzima samo niz, početni podniz i zamjenu.
uvoz (
"fmt"
"žice"
)
funkglavni() {
theString := "Ovo je testni niz koji treba modificirati."
fmt. Println (nizovi. Zamijeni (niz, "je", "bio", 1))
fmt. Println (nizovi. Zamijeni (niz, "je", "bio", -1))
fmt. Println (nizovi. Zamijeni sve (niz, "je", "bio"))
}
Primijetite da možete koristiti i Replace i ReplaceAll za zamjenu svakog pojavljivanja unutar niza.
Razdvajanje i spajanje nizova
The žice paket sadrži Podjela, SplitAfter, SplitAfterN, i SplitN funkcije za dijeljenje nizova koje vraćaju dio nizova.
The Podjela metoda se dijeli prema određenom graničniku. Slično kao i Podjela metoda, SplitAfter metoda dijeli niz, ali uključuje separator u svoje rezultate.
uvoz (
"fmt"
"žice"
)funkglavni() {
s := "Ovo je testni niz koji treba podijeliti."
fmt. Println (nizovi. Split (s, " "))
fmt. Println (nizovi. SplitAfter (s, " "))
fmt. Println (nizovi. SplitAfterN(s, " ", 3))
fmt. Println (nizovi. SplitN(s, " ", 3))
}
The SplitAfterN metoda je slična SplitAfter osim što funkcija dijeli niz na određeni maksimum podnizova. The SplitN metoda dijeli niz na određeni maksimalni broj bez uključivanja separatora u podnizove.
Možete spojiti žice s Pridružiti funkcija iz žice paket. The Pridružiti funkcija uzima odsječak i graničnik.
uvoz (
"fmt"
"žice"
)
funkglavni() {
fmt. Println (nizovi. Pridružiti([]niz{"Zdravo", "Svijet"}, ":"))
// Izlaz: "Hello: World"
}
Manipuliranje malim i malim slovima
Manipuliranje velikim i velikim slovima znakova zgodno je za mnoge zadatke, uključujući rad s dokumentacijom. Možete koristiti Spustiti funkcija za mala slova, the ToUpper funkcija za velika slova i ToTitle funkcija za velika i mala slova naslova.
uvoz (
"fmt"
"žice"
)funkglavni() {
s := "Ovo je testni niz."
fmt. Println (nizovi. Spustiti (s)) // ovo je testni niz.
fmt. Println (nizovi. prema gore (s) // OVO JE TESTNI NIZ.
fmt. Println (nizovi. Na naslov(e) // OVO JE TESTNI NIZ.
}
Izgradnja niza u Go
Graditelji nizova vrsta su koja omogućuje učinkovito ulančavanje u Go. The bajtova. Pufer type je jedan od često korištenih graditelja nizova. The bajtova. Pufer metoda implementira rastući međuspremnik bajtova s metodama čitanja i pisanja za operacije, omogućujući učinkovito dodavanje niza bez potrebe za izradom novih kopija, za razliku od + operacija i Pridružiti funkcija.
uvoz (
"fmt"
"žice"
)funkglavni() {
var b žice. Graditelj// Napišite neke nizove graditelju
b. WriteString("ovo")
b. WriteString("je")
b. WriteString("a")
b. WriteString("test")
b. WriteString("niz.")// Dobivanje duljine graditelja
fmt. Println (b. Len())// Pretvori graditelja u niz
str := b. Niz()
fmt. Println (str)// Reset graditelja
b. Reset()// Napišite još neke nizove graditelju
b. WriteString("ovo")
b. WriteString("je")
b. WriteString("drugi")
b. WriteString("test")
b. WriteString("niz.")// Dobiti sposobnost graditelja
fmt. Println (b. kapa())
// Ponovno pretvaranje graditelja u niz
str = b. Niz()
fmt. Println (str)
}
The glavni funkcija pokazuje kako možete koristiti žice. Graditelj tipa za učinkovitu izgradnju nizova. The WriteString metoda Žice. Graditelj tip proširuje niz nizova jedan na drugi, a Len metoda vraća duljinu izgrađenog niza.
The Niz metoda pretvara sadržaj graditelja u niz, a Resetiraj metoda resetira graditelja za dodatnu izgradnju niza.
The kapa metoda vraća kapacitet graditelja. Ovo je trenutni prostor koji je Go dodijelio nizu.
Podrezivanje žica u Go
The žice paket također pruža funkcionalnost za podrezivanje žica u Trim, TrimLeft, TrimPrefix, TrimRight, TrimSpace, i TrimSufiks funkcije.
uvoz (
"žice"
"fmt"
)funkglavni() {
// cijeli niz
s := "Pozdrav svijete!"// element za obrezivanje
prefiks := "Zdravo"
sufiks := "Svijet!"// skraćuje niz određenim skupom skraćivanja
fmt. Println (nizovi. Obrezivanje (s, "!"))// skraćuje za razmake na početku i kraju niza
fmt. Println (nizovi. TrimSpace (s)// skraćuje s lijevog niza navedenim skupom skraćivanja
fmt. Println (nizovi. TrimLeft (s, "Zdravo"))// izrezuje se iz desnog niza prema specificiranom skupu skraćivanja
fmt. Println (nizovi. TrimRight (s, "Svijet!"))// izrezuje prefiks
fmt. Println (nizovi. TrimPrefix (s, prefiks))
// izrezuje određeni sufiks
fmt. Println (nizovi. TrimSufiks (s, sufiks))
}
The glavni pokazuje kako možete koristiti funkcije za podrezivanje. Različite funkcije dotjeruju s nizati na razne načine:
Možete formatirati nizove u Go-u
Go standardna biblioteka također nudi fmt paket za formatiranje niza. Paket fmt koristi glagole oblikovanja u stilu C za učinkovito oblikovanje niza u Gou.