Junior
Hogyan olvasunk egy olyan sort, amely hieroglifákat, cirill betűket és más szimbólumokat tartalmaz?
sobes.tech MI
Válasz az MI-től
A Golangban a sztringek alapértelmezés szerint UTF-8 kódolásban vannak, ami lehetővé teszi, hogy problémamentesen dolgozzunk különböző ábécék karaktereivel, beleértve a hieroglifákat és a cirill ábécét is. Az ilyen sztringek olvasásához elegendő a standard függvények és csomagok használata.
Fájl olvasása:
import (
"bufio"
"fmt"
"os"
)
func readStringFromFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return fmt.Errorf("hiba a fájl megnyitásakor: %w", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // A sor már UTF-8
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("hiba a fájl olvasásakor: %w", err)
}
return nil
}
Standard bemenetről olvasás:
import (
"bufio"
"fmt"
"os"
)
func readStringFromStdin() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Írjon be egy sztringet: ")
line, _ := reader.ReadString('\n') // A sztring byte szeletként olvasódik, majd stringgé konvertálódik (UTF-8)
fmt.Println("Beírtad:", line)
}
Karakterek (rune) iterálása:
import "fmt"
func iterateString(s string) {
for i, r := range s { // Range a rune-okon (Unicode kód pontokon) iterál
fmt.Printf("Pozíció: %d, Runa: %c, Kód pont: %U\n", i, r, r)
}
}
Főbb pontok:
- A Golang sztringek változatlan byte-szekvenciák.
- Alapértelmezés szerint UTF-8 kódolást használnak. Ez biztosítja a különböző nyelvi karakterek helyes megjelenítését.
- A
rangesegítségével végzett iteráció minden rune-t (Unicode kód pontot), nem minden byte-ot dolgoz fel.
Továbbá:
Ha a forrásadatok nem UTF-8 kódolásúak, akkor szükség lehet a kódolás konvertálására a standard könyvtár csomagjai vagy külső könyvtárak, például a golang.org/x/text/encoding használatával.