Junior
Hoe lees je een regel die hiërogliefen, Cyrillisch en andere symbolen bevat?
sobes.tech AI
Antwoord van AI
In Golang worden strings standaard weergegeven in UTF-8, wat het probleemloos werken met tekens uit verschillende alfabetten mogelijk maakt, inclusief hiërogliefen en Cyrillisch. Om dergelijke strings te lezen, volstaat het om gebruik te maken van standaardfuncties en -pakketten.
Lezen uit een bestand:
import (
"bufio"
"fmt"
"os"
)
func readStringFromFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return fmt.Errorf("fout bij openen bestand: %w", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // De regel is al in UTF-8
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("fout bij scannen bestand: %w", err)
}
return nil
}
Lezen van standaardinvoer:
import (
"bufio"
"fmt"
"os"
)
func readStringFromStdin() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Voer een string in: ")
line, _ := reader.ReadString('\n') // De string wordt gelezen in een byte slice en vervolgens geconverteerd naar string (UTF-8)
fmt.Println("Je hebt ingevoerd:", line)
}
Iteratie over tekens (runes):
import "fmt"
func iterateString(s string) {
for i, r := range s { // Range itereert over runes (Unicode codepunten)
fmt.Printf("Positie: %d, Runes: %c, Unicode punt: %U\n", i, r, r)
}
}
Belangrijke punten:
- Golang strings zijn onveranderlijke byte-sequenties.
- Standaard wordt UTF-8 gebruikt. Dit garandeert een correcte weergave van tekens uit verschillende talen.
- Iteratie over een string met
rangeverwerkt elke rune (Unicode codepunt), niet elke byte.
Daarnaast:
Als de brongegevens niet in UTF-8 zijn, kan het nodig zijn om de codering te converteren met behulp van pakketten uit de standaardbibliotheek of externe bibliotheken, zoals golang.org/x/text/encoding.