Junior
Wie liest man eine Zeile, die Hieroglyphen, kyrillische Schriftzeichen und andere Symbole enthält?
sobes.tech KI
Antwort von AI
In Golang werden Strings standardmäßig in UTF-8 dargestellt, was die problemlose Arbeit mit Zeichen aus verschiedenen Alphabeten ermöglicht, einschließlich Hieroglyphen und Kyrillisch. Um solche Strings zu lesen, genügt es, die Standardfunktionen und -pakete zu verwenden.
Lesen aus einer Datei:
import (
"bufio"
"fmt"
"os"
)
func readStringFromFile(filename string) error {
file, err := os.Open(filename)
if err != nil {
return fmt.Errorf("Fehler beim Öffnen der Datei: %w", err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text() // Die Zeile ist bereits in UTF-8
fmt.Println(line)
}
if err := scanner.Err(); err != nil {
return fmt.Errorf("Fehler beim Scannen der Datei: %w", err)
}
return nil
}
Lesen von der Standardeingabe:
import (
"bufio"
"fmt"
"os"
)
func readStringFromStdin() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Geben Sie eine Zeile ein: ")
line, _ := reader.ReadString('\n') // Die Zeile wird in einem Byte-Slice gelesen und dann in einen String (UTF-8) umgewandelt
fmt.Println("Sie haben eingegeben:", line)
}
Iterieren über Zeichen (Runen):
import "fmt"
func iterateString(s string) {
for i, r := range s { // Range iteriert über Runen (Unicode-Codepunkte)
fmt.Printf("Position: %d, Rune: %c, Unicode-Codepunkt: %U\n", i, r, r)
}
}
Wichtige Punkte:
- Golang-Strings sind unveränderliche Byte-Sequenzen.
- Standardmäßig wird UTF-8 verwendet. Dies garantiert eine korrekte Darstellung von Zeichen aus verschiedenen Sprachen.
- Das Iterieren über eine String mit
rangeverarbeitet jede Rune (Unicode-Codepunkt), nicht jedes Byte.
Zusätzlich:
Wenn die Quelldaten nicht in UTF-8 vorliegen, kann eine Konvertierung der Kodierung notwendig sein, unter Verwendung von Paketen aus der Standardbibliothek oder externen Bibliotheken wie golang.org/x/text/encoding.