Maison >développement back-end >Golang >Comment supprimer efficacement les accents des chaînes Go ?

Comment supprimer efficacement les accents des chaînes Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 20:09:311005parcourir

How to Efficiently Remove Accents from Go Strings?

Go Strings : éliminer les accents

Dans Go, supprimer les accents des chaînes et les convertir en leur équivalent non accentué présente un défi particulier. Voici une exploration du problème et une solution potentielle.

Une tentative pour résoudre ce problème comprend la mise en œuvre d'une fonction basée sur l'exemple fourni dans un blog intitulé "Performing Magic". L'exemple implique l'utilisation des packages unicode/norm et text/transform.

<code class="go">package main

import (
    "bytes"
    "code.google.com/p/go.text/transform"
    "code.google.com/p/go.text/unicode/norm"
    "fmt"
    "unicode"
)

func isMn(r rune) bool {
    return unicode.Is(unicode.Mn, r) // Mn: nonspacing marks
}

func main() {
    r := bytes.NewBufferString("Your Śtring")
    t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)
    r = transform.NewReader(r, t)
    fmt.Println(r)
}</code>

Cependant, cette implémentation n'est pas sans limites. Les versions plus récentes de Go (à partir de la version 1.5) introduisent des modifications susceptibles d'affecter sa fonctionnalité.

Go 1.5 et le package de runes

Go 1.5 a introduit le package de runes, qui comprend une fonction de suppression pratique qui simplifie le processus de suppression d'accent.

<code class="go">func Remove() transform.Transformer</code>

La fonction Supprimer accepte une série de codes de catégorie Unicode et supprimera toutes les runes qui entrent dans ces catégories de la chaîne transformée. Par exemple, pour supprimer les marques sans espacement (Mn), vous pouvez utiliser :

<code class="go">t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)</code>

Cette chaîne de transformation convertira les caractères accentués en leurs équivalents non accentués, ce qui en fait une solution plus efficace et plus concise pour la suppression des accents dans Allez-y.

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