Maison >développement back-end >Golang >Comment obtenir la valeur Unicode d'un caractère dans Go ?

Comment obtenir la valeur Unicode d'un caractère dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 07:36:01605parcourir

How to Get the Unicode Value of a Character in Go?

Go équivalent à la méthode charCodeAt() de JavaScript

La méthode charCodeAt() en JavaScript récupère la valeur numérique Unicode d'un caractère à un endroit spécifique index dans une chaîne. Par exemple :

<code class="javascript">"s".charCodeAt(0) // returns 115</code>

Dans Go, le type de caractère est rune, qui est un alias de int32 et lui-même est un nombre. Par conséquent, vous pouvez obtenir la valeur numérique Unicode en imprimant directement.

Pour obtenir le caractère à une position spécifiée, le moyen le plus simple est de convertir la chaîne en []rune puis d'utiliser l'index. La façon de convertir une chaîne en rune est la conversion de type []rune("some string"):

<code class="go">fmt.Println([]rune("s")[0])</code>

Sortie :

115

Pour imprimer sous forme de caractères, utilisez le % Chaîne de caractères au format c :

<code class="go">fmt.Println([]rune("absdef")[2])      // Also prints 115
fmt.Printf("%c", []rune("absdef")[2]) // Prints s</code>

De plus, la plage for de la chaîne parcourt les runes de la chaîne, vous pouvez donc également l'utiliser. Par rapport à sa conversion en []rune, cette méthode est plus efficace :

<code class="go">i := 0
for _, r := range "absdef" {
    if i == 2 {
        fmt.Println(r)
        break
    }
    i++
}</code>

Notez que le compteur i doit être un compteur séparé et ne peut pas être une variable d'itération de boucle, car pour les retours de plage, c'est la position de l'octet, pas l'index des runes (ils sont différents si la chaîne contient des caractères multi-octets en représentation UTF-8).

est enveloppé dans une fonction :

<code class="go">func charCodeAt(s string, n int) rune {
    i := 0
    for _, r := range s {
        if i == n {
            return r
        }
        i++
    }
    return 0
}</code>

Enfin, veuillez noter que les chaînes dans Go sont stockées dans []byte, qui est une séquence d'octets de texte codée en UTF-8 (lire le blog Voir l'article "Chaînes, octets, runes et caractères dans Go" pour plus d'informations). S'il est garanti que la chaîne utilise des caractères avec des codes inférieurs à 127, vous pouvez utiliser directement des octets. c'est-à-dire que l'indexation d'une chaîne dans Go indexe ses octets, par exemple "s"[0] est la valeur d'octet 115 du caractère "s".

<code class="go">fmt.Println("s"[0])      // Prints 115
fmt.Println("absdef"[2]) // Prints 115</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn