Manipulacija z nizi je temeljna pri razvoju programske opreme; večina programskih jezikov navsezadnje nudi vrsto niza. Niz je zaporedje znakov: črk, številk in simbolov.
Manipulacija z nizi je uporabna za različne aplikacije, od obdelave besedila in analize podatkov do spletnega razvoja. Priljubljene operacije manipulacije nizov so veriženje, preverjanje podatkov, ekstrakcija in oblikovanje. Go ponuja paket za manipulacijo z nizi, imenovan "strings", v standardni knjižnici.
Paket nizov
The strune ponuja različne uporabne funkcije za manipulacijo nizov in druge operacije. Paket vključuje funkcionalnosti za operacije s podnizi, obrezovanje, primerjavo nizov, pretvorbo nizov, gradnjo nizov, razdelitev in drugo.
Paket nizov lahko uvozite tako, da na seznamu uvozov podate ime paketa.
uvoz"strune"
Iskanje podnizov
The strune paket ponuja tri funkcije za iskanje podnizov: Vsebuje funkcija, Vsebuje karkoli funkcijo in Vsebuje Rune funkcijo.
The Vsebuje funkcija preveri, ali podani niz vsebuje podniz. The Vsebuje karkoli funkcija preveri, ali niz vsebuje znake v podnizu, in Vsebuje Rune funkcija preveri, ali niz vsebuje runo (znak Unicode).
uvoz (
"fmt"
"strune"
)funkglavni() {
aString := "Pozdravljen, svet!"
podniz := "svet"
znaki := "samoglasniki"
aRune := 'o'
fmt. Println (nizi. Vsebuje (niz, podniz)) // Izhod: res
fmt. Println (nizi. ContainsAny (niz, znaki)) // Izhod: res
fmt. Println (nizi. Vsebuje Rune (niz, aRune)) // Izhod: res
}
Indeks podniza lahko pridobite z Kazalo, IndexAny, IndexByte, in IndexFunc funkcije. The Kazalo funkcija vrne indeks podniza, če se pojavi v drugem podanem nizu. The IndexAny funkcija vrne indeks prvega primerka kodno točko Unicode oz -1 če ni prisoten noben od znakov.
uvoz (
"fmt"
"strune"
)funkglavni() {
aString := "Pozdravljen, svet!"
podniz := "svet"
znaki := "svet"
byteCharacter := bajt('o')
aRune := runa('o')fmt. Println (nizi. Indeks (niz, podniz)) // Izhod: 7
fmt. Println (nizi. IndexAny (aString, chars)) // Izhod: 7
fmt. Println (nizi. IndexByte (aString, byteCharacter)) // Izhod: 4
f := funk(r runa)bool {
vrnitev r == 'o'
}
fmt. Println (nizi. IndexFunc (aString, f)) // Izhod: 4
fmt. Println (nizi. IndexRune (aString, aRune)) // Izhod: 4
}
IndexByte vrne indeks prvega primerka bajtnega znaka v nizu oz -1. The IndexFunc funkcija vrne indeks v niz prve točke Unicode, ki ustreza dani funkciji. Končno, IndexRune funkcija vrne indeks prve instance kodne točke Unicode rune.
Zamenjava podnizov v Go
The Zamenjati in Zamenjaj vse funkcija pomaga pri zamenjavi podnizov. The Zamenjati funkcija sprejme niz, izvirni podniz ter zamenjavo in več zamenjav. The Zamenjaj vse funkcija sprejme samo niz, začetni podniz in zamenjavo.
uvoz (
"fmt"
"strune"
)
funkglavni() {
theString := "To je preskusni niz, ki ga je treba spremeniti."
fmt. Println (nizi. Zamenjaj (niz, "je", "bil", 1))
fmt. Println (nizi. Zamenjaj (niz, "je", "bil", -1))
fmt. Println (nizi. Zamenjaj vse (niz, "je", "bil"))
}
Upoštevajte, da lahko uporabite tako Zamenjaj kot ZamenjajVse za zamenjavo vsakega pojavitve v nizu.
Razdelitev in spajanje nizov
The strune paket vsebuje Split, SplitAfter, SplitAfterN, in SplitN funkcije za cepitev nizov, ki vrnejo rezino nizov.
The Split metoda razdeli po določenem ločilu. Podobno kot pri Split metoda, SplitAfter metoda razdeli niz, vendar v rezultate vključi ločilo.
uvoz (
"fmt"
"strune"
)funkglavni() {
s := "To je testni niz, ki ga je treba razdeliti."
fmt. Println (nizi. Razdeli (s, " "))
fmt. Println (nizi. SplitAfter (s, " "))
fmt. Println (nizi. SplitAfterN(s, " ", 3))
fmt. Println (nizi. RazdeliN(s, " ", 3))
}
The RazdeliPoN metoda je podobna SplitAfter le da funkcija razdeli niz na določeno največje število podnizov. The SplitN metoda razdeli niz na določeno največje število brez vključitve ločila v podnize.
Vrvice lahko povežete z Pridruži se funkcijo od strune paket. The Pridruži se funkcija vključuje rezino in ločilo.
uvoz (
"fmt"
"strune"
)
funkglavni() {
fmt. Println (nizi. Pridružite se ([]vrvica{"Zdravo", "svet"}, ":"))
// Izhod: "Hello: World"
}
Manipulacija velikih in malih črk niza
Manipulacija velikih in malih črk nizov je priročna za številna opravila, vključno z delo z dokumentacijo. Lahko uporabite Znižati funkcija za male črke, the ToUpper funkcijo za velike črke in ToTitle funkcija za velike črke naslova.
uvoz (
"fmt"
"strune"
)funkglavni() {
s := "To je testni niz."
fmt. Println (nizi. ToLower (s)) // to je testni niz.
fmt. Println (nizi. ToUpper (s)) // TO JE PRESKUSNI NIZ.
fmt. Println (nizi. DoNaslov(ov)) // TO JE PRESKUSNI NIZ.
}
Gradnja nizov v Go
Graditelji nizov so vrsta, ki omogoča učinkovito veriženje v Go. The bajtov. Medpomnilnik type je eden izmed pogosto uporabljenih graditeljev nizov. The bajtov. Medpomnilnik metoda implementira rastoč vmesni pomnilnik bajtov z metodami branja in pisanja za operacije, kar omogoča učinkovito dodajanje nizov, ne da bi bilo treba narediti nove kopije, za razliko od + delovanje in Pridruži se funkcijo.
uvoz (
"fmt"
"strune"
)funkglavni() {
var b strune. Gradbenik// Napišite nekaj nizov graditelju
b. WriteString("Ta")
b. WriteString("je")
b. WriteString("a")
b. WriteString("test")
b. WriteString("vrvica.")// Pridobite dolžino graditelja
fmt. Println (b. Len())// Pretvori graditelja v niz
str := b. Vrvica()
fmt. Println (str)// Ponastavi graditelj
b. Ponastaviti()// Graditelju napišite še nekaj nizov
b. WriteString("Ta")
b. WriteString("je")
b. WriteString("drugi")
b. WriteString("test")
b. WriteString("vrvica.")// Pridobite zmogljivost graditelja
fmt. Println (b. kapa())
// Znova pretvori graditelja v niz
str = b. Vrvica()
fmt. Println (str)
}
The glavni funkcija prikazuje, kako lahko uporabite strune. Gradbenik tip za učinkovito gradnjo nizov. The WriteString metoda Strune. Gradbenik tip razširi zaporedje nizov drug na drugega in Len metoda vrne dolžino zgrajenega niza.
The Vrvica metoda pretvori vsebino graditelja v niz, in Ponastaviti metoda ponastavi graditelj za dodatno gradnjo niza.
The kapa metoda vrne zmogljivost graditelja. To je trenutni prostor, ki ga je Go dodelil nizu.
Obrezovanje vrvic v Go
The strune paket ponuja tudi funkcionalnost za obrezovanje vrvic v Trim, Obreži levo, TrimPrefix, TrimRight, TrimSpace, in TrimSuffix funkcije.
uvoz (
"strune"
"fmt"
)funkglavni() {
// celoten niz
s := "Pozdravljen, svet!"// element za obrezovanje
predpona := "Zdravo"
pripona := "Svet!"// obrezuje niz z določenim nizom za prirezovanje
fmt. Println (nizi. Obrezovanje (s, "!"))// obrezuje s presledki na začetku in koncu niza
fmt. Println (nizi. TrimSpace (s))// prirezuje levi niz z določenim naborom prirezov
fmt. Println (nizi. TrimLeft (s, "Zdravo"))// izrezuje iz desnega niza z določenim naborom za prirezovanje
fmt. Println (nizi. TrimRight (s, "Svet!"))// odreže predpono
fmt. Println (nizi. TrimPrefix (s, predpona))
// odreže določeno pripono
fmt. Println (nizi. TrimSuffix (s, pripona))
}
The glavni prikazuje, kako lahko uporabite funkcije za obrezovanje. Različne funkcije prirezujejo s niz na različne načine:
V Go lahko formatirate nize
Standardna knjižnica Go nudi tudi paket fmt za oblikovanje nizov. Paket fmt uporablja glagole oblikovanja v slogu C za učinkovito oblikovanje nizov v Go.