Junior
Come leggere una riga che contiene geroglifici, cirillico e altri simboli?
sobes.tech AI
Risposta dell'AI
In Golang, le string sono rappresentate di default in UTF-8, il che permette di lavorare senza problemi con caratteri di diversi alfabeti, inclusi geroglifici e cirillico. Per leggere tali stringhe, basta usare funzioni e pacchetti standard.
Lettura da file:
import (
"bufio"
"fmt"
"os"
)
func readStringFromFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return fmt.Errorf("errore apertura file: %w", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // La stringa è già in UTF-8
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("errore scansione file: %w", err)
}
return nil
}
Lettura da input standard:
import (
"bufio"
"fmt"
"os"
)
func readStringFromStdin() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Inserisci una stringa: ")
line, _ := reader.ReadString('\n') // La stringa viene letta in uno slice di byte e poi convertita in stringa (UTF-8)
fmt.Println("Hai inserito:", line)
}
Iterazione sui caratteri (rune):
import "fmt"
func iterateString(s string) {
for i, r := range s { // Range itera sui rune (punti di codice Unicode)
fmt.Printf("Posizione: %d, Runa: %c, Punto di codice: %U\n", i, r, r)
}
}
Punti principali:
- Le stringhe in Golang sono sequenze immutabili di byte.
- Per impostazione predefinita, si utilizza la codifica UTF-8. Questo garantisce una rappresentazione corretta dei caratteri di diverse lingue.
- L'iterazione su una stringa con
rangeelabora ogni rune (punto di codice Unicode), non ogni byte.
In aggiunta:
Se i dati di origine non sono in UTF-8, potrebbe essere necessario convertire la codifica usando pacchetti della libreria standard o librerie esterne, come golang.org/x/text/encoding.