Sobes.tech
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 range segí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.